- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是
$<COMPILER_CXX_ID:Clang>
将为 Clang
和 AppleClang
返回 1
根据文档,我会说是,但我不确定...
1
if the CMake-id of the CXX compiler matches comp, otherwise0
来源:https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html
来源:https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html
最佳答案
TLDR:使用 $<CXX_COMPILER_ID:Clang>
时并且有 CMP0025
至 NEW
然后AppleClang
不会匹配它。
首先我假设政策CMP0025设置为 NEW
得到AppleClang
在 MacOS 上使用 clang
由 Xcode
提供
if (POLICY CMP0025)
cmake_policy(SET CMP0025 NEW)
endif()
用 CMP0025
匹配两个编译器设置为 NEW
你有两个选择
首先创建一个变量:
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(USING_CLANG ON)
else()
set(USING_CLANG OFF)
endif()
注意:注意 MATCHES
的使用而不是 EQUALS
然后你可以在你的生成器表达式中使用它:
target_compile_definition(target PUBLIC
$<$<BOOL:${USING_CLANG}>:-DUSE_CLANG>)
您还可以使用:
target_compile_definition(target PUBLIC
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-DUSE_CLANG>
您可以在 https://github.com/Mizux/cmp0025 找到一个工作示例
注意:不要犹豫,查看 Travis-CI 日志(通过单击构建标志)
关于c++ - CMAKE COMPILER_CXX_ID 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53410514/
是 $ 将为 Clang 和 AppleClang 返回 1 根据文档,我会说是,但我不确定... 1 if the CMake-id of the CXX compiler matches comp
我是一名优秀的程序员,十分优秀!