This library contains code that extends and simplifies different operations
for C language based programs.
Revisión | ffb00e7596fd3bb7dc5b4fcdc59b855ece97d3a8 (tree) |
---|---|
Tiempo | 2022-08-29 03:24:26 |
Autor | Sergey Gusarov <laborer2008@gmai...> |
Commiter | Sergey Gusarov |
Possibility to specify C++ standard and compiler flags in more portable way
since cmake 3.1
@@ -1,4 +1,4 @@ | ||
1 | -b63dd681b9ece95ba53d5dafce9320c105b1fe08 cmake/cmake_tools | |
1 | +c04f78243dc8c77b10613d37c2cc7f9916d447b6 cmake/cmake_tools | |
2 | 2 | 5013d507802becd2c434d4dbdafad45c3da5ef23 include/ctools/std/msinttypes |
3 | 3 | df3b1904d9525506c6bf07d8257bb0930eb8d2ce pyrepo |
4 | 4 | 3852926c00f210905db5feb7a9fa5d5dbf7963ea tests/unity |
@@ -23,34 +23,47 @@ | ||
23 | 23 | elseif (CT_LANG STREQUAL "CXX") |
24 | 24 | cmtAssertVariableNotEmpty(CMAKE_CXX_COMPILER_ID) |
25 | 25 | |
26 | - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | |
27 | - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CLANG_VERSION) | |
26 | + # C++11 will be default for a long time. In some cases it's required to bump this limitation | |
27 | + # (e.g. Qt6 demands on C++17 and googletest 2022 demands on C++14) | |
28 | 28 | |
29 | - # TODO: untested | |
30 | - if (CLANG_VERSION VERSION_GREATER 2.9 OR CLANG_VERSION VERSION_EQUAL 2.9) | |
31 | - set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++11") | |
32 | - else() | |
33 | - set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++0x") | |
29 | + if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.0) | |
30 | + string(COMPARE EQUAL "${CMAKE_CXX_STANDARD}" "" IsCmakeCxxEmpty) | |
31 | + if (IsCmakeCxxEmpty) | |
32 | + set(CMAKE_CXX_STANDARD 11) | |
34 | 33 | endif() |
35 | - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | |
36 | - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) | |
37 | 34 | |
38 | - if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7) | |
35 | + set(CMAKE_CXX_STANDARD_REQUIRED ON) | |
36 | + else() | |
37 | + # In this branch C++11 will be default all the time | |
38 | + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | |
39 | + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CLANG_VERSION) | |
40 | + | |
41 | + # TODO: untested | |
42 | + if (CLANG_VERSION VERSION_GREATER 2.9 OR CLANG_VERSION VERSION_EQUAL 2.9) | |
43 | + set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++11") | |
44 | + else() | |
45 | + set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++0x") | |
46 | + endif() | |
47 | + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | |
48 | + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) | |
49 | + | |
50 | + if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7) | |
51 | + set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++11") | |
52 | + else() | |
53 | + set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++0x") | |
54 | + endif() | |
55 | + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | |
56 | + # TODO | |
57 | + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") | |
39 | 58 | set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++11") |
59 | + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Borland" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Embarcadero") | |
60 | + # TODO | |
40 | 61 | else() |
41 | - set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++0x") | |
62 | + message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}") | |
42 | 63 | endif() |
43 | - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | |
44 | - # TODO | |
45 | - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") | |
46 | - set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++11") | |
47 | - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Borland" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Embarcadero") | |
48 | - # TODO | |
49 | - else() | |
50 | - message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}") | |
64 | + | |
65 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_OPTIONS}") | |
51 | 66 | endif() |
52 | - | |
53 | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_OPTIONS}") | |
54 | 67 | else() |
55 | 68 | message(FATAL_ERROR "Unsupported language: ${CT_LANG}") |
56 | 69 | endif() |