# ------------------------------------------------------------ # # -------------- 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)