• R/O
  • SSH

libctools: Commit

This library contains code that extends and simplifies different operations
for C language based programs.


Commit MetaInfo

Revisiónffb00e7596fd3bb7dc5b4fcdc59b855ece97d3a8 (tree)
Tiempo2022-08-29 03:24:26
AutorSergey Gusarov <laborer2008@gmai...>
CommiterSergey Gusarov

Log Message

Possibility to specify C++ standard and compiler flags in more portable way
since cmake 3.1

Cambiar Resumen

Diferencia incremental

diff -r 1c38dd7e6d10 -r ffb00e7596fd .hgsubstate
--- a/.hgsubstate Sun Aug 28 17:29:36 2022 +0300
+++ b/.hgsubstate Sun Aug 28 21:24:26 2022 +0300
@@ -1,4 +1,4 @@
1-b63dd681b9ece95ba53d5dafce9320c105b1fe08 cmake/cmake_tools
1+c04f78243dc8c77b10613d37c2cc7f9916d447b6 cmake/cmake_tools
22 5013d507802becd2c434d4dbdafad45c3da5ef23 include/ctools/std/msinttypes
33 df3b1904d9525506c6bf07d8257bb0930eb8d2ce pyrepo
44 3852926c00f210905db5feb7a9fa5d5dbf7963ea tests/unity
diff -r 1c38dd7e6d10 -r ffb00e7596fd cmake/compilers.cmake
--- a/cmake/compilers.cmake Sun Aug 28 17:29:36 2022 +0300
+++ b/cmake/compilers.cmake Sun Aug 28 21:24:26 2022 +0300
@@ -23,34 +23,47 @@
2323 elseif (CT_LANG STREQUAL "CXX")
2424 cmtAssertVariableNotEmpty(CMAKE_CXX_COMPILER_ID)
2525
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)
2828
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)
3433 endif()
35- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
36- execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
3734
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")
3958 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
4061 else()
41- set(COMMON_OPTIONS "${COMMON_OPTIONS} -std=c++0x")
62+ message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}")
4263 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}")
5166 endif()
52-
53- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_OPTIONS}")
5467 else()
5568 message(FATAL_ERROR "Unsupported language: ${CT_LANG}")
5669 endif()
Show on old repository browser