diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 8a87824..4af7ea3 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1 +1,5 @@ +add_library(continuable-features-flags INTERFACE) +add_library(continuable-features-warnings INTERFACE) +add_library(continuable-features-noexcept INTERFACE) + include(cmake/configure_compiler.cmake) diff --git a/cmake/compiler/clang.cmake b/cmake/compiler/clang.cmake index 8f2f70a..3630d91 100644 --- a/cmake/compiler/clang.cmake +++ b/cmake/compiler/clang.cmake @@ -1,8 +1,15 @@ # Enable full warnings -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra") +target_compile_options(continuable-features-warnings + INTERFACE + -Wall + -pedantic + -Wextra) if (TESTS_NO_EXCEPTIONS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + target_compile_options(continuable-features-noexcept + INTERFACE + -fno-exceptions) + message(STATUS "Clang: Disabled exceptions") endif() diff --git a/cmake/compiler/gcc.cmake b/cmake/compiler/gcc.cmake index 46358ac..7eb1f01 100644 --- a/cmake/compiler/gcc.cmake +++ b/cmake/compiler/gcc.cmake @@ -1,7 +1,14 @@ # Enable full warnings -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra") +target_compile_options(continuable-features-warnings + INTERFACE + -Wall + -pedantic + -Wextra) if (TESTS_NO_EXCEPTIONS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + target_compile_options(continuable-features-noexcept + INTERFACE + -fno-exceptions) + message(STATUS "GCC: Disabled exceptions") endif() diff --git a/cmake/compiler/msvc.cmake b/cmake/compiler/msvc.cmake index 77f568c..3de162c 100644 --- a/cmake/compiler/msvc.cmake +++ b/cmake/compiler/msvc.cmake @@ -5,13 +5,25 @@ else() endif() if (PLATFORM EQUAL 64) - add_definitions("-D_WIN64") + target_compile_definitions(continuable-features-flags + INTERFACE + -D_WIN64) endif() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP2 /bigobj") +target_compile_options(continuable-features-flags + INTERFACE + /MP2 + /bigobj) + +target_compile_options(continuable-features-warnings + INTERFACE + /W4) if (TESTS_NO_EXCEPTIONS) - add_definitions(-D_HAS_EXCEPTIONS=0) + target_compile_definitions(continuable-features-noexcept + INTERFACE + -D_HAS_EXCEPTIONS=0) + string(REGEX REPLACE "/GX" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") message(STATUS "MSVC: Disabled exceptions") diff --git a/test/unit-test/CMakeLists.txt b/test/unit-test/CMakeLists.txt index c12e35f..0e54ab6 100644 --- a/test/unit-test/CMakeLists.txt +++ b/test/unit-test/CMakeLists.txt @@ -24,7 +24,10 @@ foreach(STEP RANGE 4) PRIVATE gtest-main cxx_function - continuable) + continuable + continuable-features-flags + continuable-features-warnings + continuable-features-noexcept) target_compile_definitions(${PROJECT_NAME} PUBLIC