forked from CloudCompare/CloudCompare
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeSetCompilerOptions.cmake
39 lines (31 loc) · 1.48 KB
/
CMakeSetCompilerOptions.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
if( UNIX OR MINGW )
# You need a c++11 Compiler to build CC
# When we require cmake 3.1, we can use a cleaner method:
# CXX_STANDARD & CXX_STANDARD_REQUIRED
# https://cmake.org/cmake/help/v3.1/prop_tgt/CXX_STANDARD.html
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if (NOT COMPILER_SUPPORTS_CXX11)
message(ERROR "Your compiler does not support C++11")
endif()
set( CXX11_FLAG "-std=c++11")
# MinGW doesn't use fPIC
if( UNIX )
set( FPIC_FLAG "-fPIC")
endif()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG} ${FPIC_FLAG}")
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FPIC_FLAG}")
elseif( MSVC )
add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -D__STDC_LIMIT_MACROS)
OPTION( OPTION_MP_BUILD "Check to activate multithreaded compilation with MSVC" OFF )
if( ${OPTION_MP_BUILD} )
set( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}\ /MP)
endif()
#disable SECURE_SCL (see http://channel9.msdn.com/shows/Going+Deep/STL-Iterator-Debugging-and-Secure-SCL/)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /D _SECURE_SCL=0" ) # disable checked iterators
#use VLD for mem leak checking
OPTION( OPTION_USE_VISUAL_LEAK_DETECTOR "Check to activate compilation (in debug) with Visual Leak Detector" OFF )
if( ${OPTION_USE_VISUAL_LEAK_DETECTOR} )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D USE_VLD" )
endif()
endif()