diff options
author | HampusM <hampus@hampusmat.com> | 2022-02-25 18:05:20 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-06-13 17:56:53 +0200 |
commit | c41090d12f4c7269524124dc0a2b5f9a03a61d93 (patch) | |
tree | 098024012a6a3d6e9d8aea64f4bb3863310d270a | |
parent | 7eaf077f1f75194e15968e239ff69892e5e1b648 (diff) |
build: improve CMakeLists
-rw-r--r-- | CMakeLists.txt | 34 | ||||
-rw-r--r-- | src/CMakeLists.txt | 38 |
2 files changed, 43 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 616ab2d..920e275 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,35 +1,11 @@ cmake_minimum_required(VERSION 3.2.0) set(CMAKE_EXPORT_COMPILE_COMMANDS 1) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 17) -project(game-of-life CXX) - -file(GLOB SOURCES - src/game_of_life.cpp - src/conversion.cpp - src/randomization.cpp) - -add_executable(${PROJECT_NAME} ${SOURCES}) - -target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -target_compile_options( - ${PROJECT_NAME} - PRIVATE - -Wall -Wextra -Wpedantic -Wshadow - -Wold-style-cast -Wcast-align -Wno-unused - -Wconversion -Wcast-qual -Wctor-dtor-privacy - -Wdisabled-optimization -Wformat=2 -Winit-self - -Wlogical-op -Wmissing-declarations - -Wmissing-include-dirs -Wnoexcept -Woverloaded-virtual - -Wredundant-decls -Wsign-conversion -Wsign-promo - -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default - -Wundef -Werror - -pedantic -fsanitize=address -) - -target_include_directories(${PROJECT_NAME} PRIVATE src) - -target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) +project(game-of-life CXX) +# add_subdirectory(lib) +add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..04f3e02 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,38 @@ +function(target_link_libraries_system target) + set(libs ${ARGN}) + + foreach(lib ${libs}) + get_target_property(lib_include_dirs ${lib} INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${target} SYSTEM PRIVATE ${lib_include_dirs}) + target_link_libraries(${target} ${lib}) + endforeach(lib) +endfunction(target_link_libraries_system) + +file(GLOB SOURCES + game_of_life.cpp + conversion.cpp + randomization.cpp) + +add_executable(${PROJECT_NAME} ${SOURCES}) + +target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17) + +target_compile_options( + ${PROJECT_NAME} + PRIVATE + -Wall -Wextra -Wpedantic -Wshadow + -Wold-style-cast -Wcast-align -Wno-unused + -Wconversion -Wcast-qual -Wctor-dtor-privacy + -Wdisabled-optimization -Wformat=2 -Winit-self + -Wlogical-op -Wmissing-declarations + -Wmissing-include-dirs -Wnoexcept -Woverloaded-virtual + -Wredundant-decls -Wsign-conversion -Wsign-promo + -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default + -Wundef -Werror + -pedantic -fsanitize=address -fno-exceptions +) + + +target_include_directories(${PROJECT_NAME} PRIVATE .) + +target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) |