aboutsummaryrefslogtreecommitdiff
path: root/comp6771/1/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'comp6771/1/CMakeLists.txt')
-rw-r--r--comp6771/1/CMakeLists.txt79
1 files changed, 79 insertions, 0 deletions
diff --git a/comp6771/1/CMakeLists.txt b/comp6771/1/CMakeLists.txt
new file mode 100644
index 0000000..c5412d7
--- /dev/null
+++ b/comp6771/1/CMakeLists.txt
@@ -0,0 +1,79 @@
+# ------------------------------------------------------------ #
+# -------------- DO NOT TOUCH BELOW THIS LINE ---------------- #
+# ------------------------------------------------------------ #
+
+# this must be the first line of a CMake script.
+# sets the lowerbound on what CMake version can be used.
+cmake_minimum_required(VERSION 3.0)
+
+# the name of this CMake project and what language it uses
+# we could list more languages if we were using more.
+project(COMP6771_LAB_001 LANGUAGES CXX)
+
+# we use C++20
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED YES)
+set(CMAKE_CXX_EXTENSIONS NO)
+
+# this is helpful for editors like VS Code
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+# helpful compiler flags for gcc/clang
+# the descriptions for these flags can be found on the GNU Compiler Collection's webpage.
+add_compile_options(
+ -Wall
+ -Wextra
+ -pedantic-errors
+ -Wconversion
+ -Wsign-conversion
+ -Wdouble-promotion
+ -Wcast-align
+ -Wformat=2
+ -Wuninitialized
+ -Wnon-virtual-dtor
+ -Woverloaded-virtual
+ -Wdeprecated-copy-dtor
+ -Wold-style-cast
+ -Wzero-as-null-pointer-constant
+ -Wsuggest-override
+ -fstack-protector-strong
+ -O2
+)
+
+# debug builds should be compiled with sanitizers
+# sanitizers are small libraries that check things like buffer overrun with minimal runtime overhead.
+set(CMAKE_CXX_FLAGS_DEBUG_INIT "-fsanitize=address,undefined")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-fsanitize=address,undefined")
+set(CMAKE_CXX_EXE_LINKER_FLAGS_DEBUG_INIT "-fsanitize=address,undefined")
+set(CMAKE_CXX_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-fsanitize=address,undefined")
+
+
+# add the testing library Catch2
+enable_testing()
+add_library(catch2_main lib/catch2_main.cpp)
+target_include_directories(catch2_main PUBLIC lib)
+# link the library so that other programs can get it
+link_libraries(catch2_main)
+
+# ------------------------------------------------------------ #
+# -------------- DO NOT MODIFY ABOVE THIS LINE --------------- #
+# ------------------------------------------------------------ #
+
+# make sure english.txt is with the build files
+configure_file(src/english.txt english.txt COPYONLY)
+
+# adding word_ladder library
+add_library(word_ladder src/word_ladder.cpp)
+link_libraries(word_ladder)
+
+# adding main file
+add_executable(debugging src/main.cpp)
+
+# adding test file
+add_executable(word_ladder_test_exe src/word_ladder.test.cpp)
+add_test(word_ladder_test word_ladder_test_exe)
+
+# adding benchmark file
+add_executable(word_ladder_benchmark_exe src/word_ladder_benchmark.test.cpp)
+add_test(word_ladder_benchmark word_ladder_benchmark_exe)
+