cmake: enable c++11 when required

This commit is contained in:
Hugues Delorme 2017-03-16 16:41:13 +01:00
parent 7ff9b74c13
commit 843af6f4e9
5 changed files with 28 additions and 9 deletions

View File

@ -30,6 +30,8 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
#cmake_policy(SET CMP0018 NEW) #cmake_policy(SET CMP0018 NEW)
project(gmio)
include(CheckIncludeFiles) include(CheckIncludeFiles)
include(CheckFunctionExists) include(CheckFunctionExists)
include(CheckSymbolExists) include(CheckSymbolExists)
@ -37,7 +39,6 @@ include(CheckCSourceCompiles)
include(CheckTypeSize) include(CheckTypeSize)
include(CMakeDependentOption) include(CMakeDependentOption)
project(gmio)
set(GMIO_VERSION_MAJOR 0) set(GMIO_VERSION_MAJOR 0)
set(GMIO_VERSION_MINOR 4) set(GMIO_VERSION_MINOR 4)
set(GMIO_VERSION_PATCH 0) set(GMIO_VERSION_PATCH 0)
@ -162,7 +163,7 @@ if(CMAKE_C_COMPILER_IS_GCC_COMPATIBLE)
# Disable warnings -Wno-missing-braces -Wno-missing-field-initializers # Disable warnings -Wno-missing-braces -Wno-missing-field-initializers
# in case GCC wrongly warns about universal zero initializer {0} # in case GCC wrongly warns about universal zero initializer {0}
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} -Werror=missing-braces") set(CMAKE_REQUIRED_FLAGS "-Werror=missing-braces")
check_c_source_compiles( check_c_source_compiles(
"struct data { char array[128]; }; "struct data { char array[128]; };
int main() { int main() {
@ -170,7 +171,7 @@ if(CMAKE_C_COMPILER_IS_GCC_COMPATIBLE)
return d.array[0]; return d.array[0];
}" }"
GMIO_GCC_DOESNT_WARN_UNIVERSAL_0_INITIALIZER) GMIO_GCC_DOESNT_WARN_UNIVERSAL_0_INITIALIZER)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS}") # Restore CMAKE_REQUIRED_FLAGS set(CMAKE_REQUIRED_FLAGS) # Popup changes
if (NOT GMIO_GCC_DOESNT_WARN_UNIVERSAL_0_INITIALIZER) if (NOT GMIO_GCC_DOESNT_WARN_UNIVERSAL_0_INITIALIZER)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-missing-field-initializers") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-missing-field-initializers")
endif() endif()
@ -214,8 +215,6 @@ if(MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Oi") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Oi")
endif() endif()
set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS}")
# Some compilers (like GCC v4.9) don't disable <stdint.h> when needed # Some compilers (like GCC v4.9) don't disable <stdint.h> when needed
check_include_files(stdint.h GMIO_HAVE_STDINT_H) check_include_files(stdint.h GMIO_HAVE_STDINT_H)

View File

@ -27,13 +27,11 @@
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
############################################################################# #############################################################################
include(../../scripts/enable_cxx11.cmake)
set(ROOTDIR_LIB3MF ${CMAKE_SOURCE_DIR} CACHE PATH set(ROOTDIR_LIB3MF ${CMAKE_SOURCE_DIR} CACHE PATH
"Directory where the Lib3MF library resides") "Directory where the Lib3MF library resides")
if(CMAKE_C_COMPILER_IS_GCC_COMPATIBLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
include_directories(${ROOTDIR_LIB3MF}/Include) include_directories(${ROOTDIR_LIB3MF}/Include)
add_executable(benchmark_lib3mf main.cpp ${COMMONS_FILES}) add_executable(benchmark_lib3mf main.cpp ${COMMONS_FILES})

View File

@ -27,6 +27,8 @@
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
############################################################################# #############################################################################
include(../scripts/enable_cxx11.cmake)
include_directories(${CMAKE_SOURCE_DIR}/src) include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_BINARY_DIR}/src/gmio_core) # For cmake generated headers include_directories(${CMAKE_BINARY_DIR}/src/gmio_core) # For cmake generated headers
include_directories(${CMAKE_SOURCE_DIR}/tests/fake_support/opencascade) include_directories(${CMAKE_SOURCE_DIR}/tests/fake_support/opencascade)

View File

@ -0,0 +1,18 @@
include(CheckCXXCompilerFlag)
if(CMAKE_COMPILER_IS_GNUCXX
OR CMAKE_CXX_COMPILER MATCHES ".*clang")
check_cxx_compiler_flag("-std=c++11" GMIO_COMPILER_SUPPORTS_CXX11)
if(GMIO_COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
check_cxx_compiler_flag("-std=c++0x" GMIO_COMPILER_SUPPORTS_CXX0X)
if(GMIO_COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support")
endif()
endif()
endif()
# Note : cmake 3.1 introduced set_property(TARGET tgt PROPERTY CXX_STANDARD 11)

View File

@ -27,6 +27,8 @@
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
############################################################################# #############################################################################
include(../../scripts/enable_cxx11.cmake)
file(GLOB GMIO_FAKEOCC_HEADERS opencascade/*.hxx opencascade/*.h) file(GLOB GMIO_FAKEOCC_HEADERS opencascade/*.hxx opencascade/*.h)
set(GMIO_FAKEOCC_HEADERS ${GMIO_FAKEOCC_HEADERS}) set(GMIO_FAKEOCC_HEADERS ${GMIO_FAKEOCC_HEADERS})