diff --git a/CMakeLists.txt b/CMakeLists.txt index d1ba52847..bea549593 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,16 +81,13 @@ endif() set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-Wall" COMPILER_SUPPORTS_WALL) - if(COMPILER_SUPPORTS_WALL) - message("Enabling -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") - endif() + include(CheckCXXFlag) + check_cxx_flag(-Wall COMPILER_SUPPORTS_WALL) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-switch") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch") if(NOT ANDROID) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-class-memaccess -Wno-invalid-offsetof") + check_cxx_flag(-Wno-class-memaccess COMPILER_SUPPORTS_MEMACCESS) + check_cxx_flag(-Wno-invalid-offsetof COMPILER_SUPPORTS_OFFSETOF) endif() endif() diff --git a/CMakeModules/CheckCXXFlag.cmake b/CMakeModules/CheckCXXFlag.cmake new file mode 100644 index 000000000..ef1b3ffcc --- /dev/null +++ b/CMakeModules/CheckCXXFlag.cmake @@ -0,0 +1,8 @@ +include(CheckCXXCompilerFlag) + +function(check_cxx_flag flag var) + CHECK_CXX_COMPILER_FLAG("-Werror ${flag}" ${var}) + if(${var}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE) + endif() +endfunction()