aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-02-25 18:05:20 +0100
committerHampusM <hampus@hampusmat.com>2022-06-13 17:56:53 +0200
commitc41090d12f4c7269524124dc0a2b5f9a03a61d93 (patch)
tree098024012a6a3d6e9d8aea64f4bb3863310d270a
parent7eaf077f1f75194e15968e239ff69892e5e1b648 (diff)
build: improve CMakeLists
-rw-r--r--CMakeLists.txt34
-rw-r--r--src/CMakeLists.txt38
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)