source: nscp/cmake/SetMultiThread.cmake @ 7065334

0.4.00.4.10.4.2
Last change on this file since 7065334 was 86632db, checked in by Michael Medin <michael@…>, 3 years ago

Refactored build scripts

  • Property mode set to 100644
File size: 1.5 KB
Line 
1# SET_MULTITHREAD Macro
2# Sets multithread switches for Visual Studio and GNU G++ compilers
3# Uses static runtime library on Windows
4# Can be used multiple times, but overrides any switches added before the first call
5# The /RuntimeLibrary:MT SET switch could be an option, if future CMake versions support it
6
7MACRO ( SET_MULTITHREAD )
8
9  IF ( NOT MT_SET )
10       
11        SET ( MT_SET 1 )
12       
13    # Threads compatibility
14    IF ( MSVC )
15      MESSAGE ( STATUS "Setting MSVC MT switches")
16      SET (
17        CMAKE_CXX_FLAGS_DEBUG
18          "/D_DEBUG /MTd /Zi  /Ob0 /Od /GZ"
19          CACHE STRING "MSVC MT flags " FORCE
20      )
21 
22      SET (
23        CMAKE_CXX_FLAGS_RELEASE
24          "/MT /O2 /Ob2 /D NDEBUG"
25          CACHE STRING "MSVC MT flags " FORCE
26      )
27 
28      SET (
29        CMAKE_CXX_FLAGS_MINSIZEREL
30          "/MT /O1 /Ob1 /D NDEBUG"
31          CACHE STRING "MSVC MT flags " FORCE
32      )
33 
34      SET (
35        CMAKE_CXX_FLAGS_RELWITHDEBINFO
36          "/MT /Zi /O2 /Ob1 /D NDEBUG"
37          CACHE STRING "MSVC MT flags " FORCE
38      )
39     
40      # Maybe future CMake versions will implement this
41      #SET (
42      #  CMAKE_CXX_FLAGS_RELEASE
43      #    "/RuntimeLibrary:MT ${CMAKE_CXX_FLAGS_RELEASE}"
44      #)
45    ENDIF ( MSVC )
46   
47    IF ( CMAKE_COMPILER_IS_GNUCXX )
48      MESSAGE ( STATUS "Setting GCC MT switches" )
49      SET (
50        CMAKE_CXX_FLAGS
51          "${CMAKE_CXX_FLAGS} -pthread"
52      )
53    ENDIF ( CMAKE_COMPILER_IS_GNUCXX )
54 
55  ENDIF ( NOT MT_SET )
56
57ENDMACRO ( SET_MULTITHREAD )
Note: See TracBrowser for help on using the repository browser.