mirror of
https://github.com/mpusz/mp-units.git
synced 2025-07-30 10:27:16 +02:00
Enable use of std::format for AppleClang / Xcode 16
Specified the minimum apple-clang version to support `std::format` to 16 for _connanfile.py_. Xcode 16 does include the `<format>` header but does not seem to have the __cpp_lib_format compatibility macro defined so a similar override was needed as we had for Clang 17. To be able to use `std::format` with Xcode 16 I had to pass `-DMP_UNITS_API_STD_FORMAT=AUTO` when calling `cmake`. Is this expected or is this a sign I missed something in my changes to _CMakeLists.txt_?
This commit is contained in:
@ -99,7 +99,7 @@ class MPUnitsConan(ConanFile):
|
||||
"compiler": {
|
||||
"gcc": "13",
|
||||
"clang": "17",
|
||||
"apple-clang": "",
|
||||
"apple-clang": "16",
|
||||
"msvc": "194",
|
||||
},
|
||||
},
|
||||
|
@ -53,13 +53,15 @@ check_cxx_feature_supported(__cpp_explicit_this_parameter ${projectPrefix}EXPLIC
|
||||
|
||||
# libc++ has a basic supports for std::format but does not set __cpp_lib_format
|
||||
# https://github.com/llvm/llvm-project/issues/77773
|
||||
if(NOT ${projectPrefix}LIB_FORMAT_SUPPORTED
|
||||
AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "17"
|
||||
AND ${projectPrefix}LIBCXX
|
||||
)
|
||||
if(NOT ${projectPrefix}LIB_FORMAT_SUPPORTED AND ${projectPrefix}LIBCXX)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "17")
|
||||
message(STATUS "Clang 17+ with libc++ detected, overriding `std::format` support")
|
||||
set(${projectPrefix}LIB_FORMAT_SUPPORTED ON)
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "16")
|
||||
message(STATUS "AppleClang 16+ with libc++ detected, overriding `std::format` support")
|
||||
set(${projectPrefix}LIB_FORMAT_SUPPORTED ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# clang++-18 supports explicit `this` parameter
|
||||
|
Reference in New Issue
Block a user