diff options
| author | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2025-02-13 18:00:17 +1100 |
|---|---|---|
| committer | Nicolas James <Eele1Ephe7uZahRie@tutanota.com> | 2025-02-13 18:00:17 +1100 |
| commit | 98cef5e9a772602d42acfcf233838c760424db9a (patch) | |
| tree | 5277fa1d7cc0a69a0f166fcbf10fd320f345f049 /comp6771/1/CMakeLists.txt | |
initial commit
Diffstat (limited to 'comp6771/1/CMakeLists.txt')
| -rw-r--r-- | comp6771/1/CMakeLists.txt | 79 |
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) + |
