在buildem_cmake_recipe.cmake中,我看到了一个表达式:
externalproject_add_step(${_name} BuildOtherConfig
COMMAND ${CMAKE_COMMAND} --build ${BINARY_DIR} --config "$<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug>" --target INSTALL
DEPENDEES install
)
Run Code Online (Sandbox Code Playgroud)
这$<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug>意味着什么?
Rei*_*ica 16
这是一个CMake 生成器表达式.您可以按照链接进行全面讨论,了解这些内容以及它们可以执行的操作.简而言之,它是CMake将在生成时评估的一段文本(当它完成解析所有CMakeLists并生成构建系统时); 它可以为每个配置评估不同的值.
你在那里的那个意味着大概这个(伪代码):
if current_configuration == "Debug"
output "Release"
if current_configureation == "Release"
output "Debug"
Run Code Online (Sandbox Code Playgroud)
因此,如果当前配置是Debug,则整个表达式将计算为Release.如果当前配置发布,它将评估为Debug.请注意,添加的步骤称为"BuildOtherConfig",因此这种反转逻辑是有意义的.
如何工作,更详细一点:
$<CONFIG:Debug>
Run Code Online (Sandbox Code Playgroud)
这将评估1当前配置是否为Debug,0否则为.
$<1:X>
Run Code Online (Sandbox Code Playgroud)
评估到X.
$<0:X>
Run Code Online (Sandbox Code Playgroud)
计算为空字符串(无值).
把它放在一起,我们有$<$<CONFIG:Debug>:Release>.当前配置是Debug,它的评估如下:
$<$<CONFIG:Debug>:Release>
$<1:Release>
Release
Run Code Online (Sandbox Code Playgroud)
当前配置不是时Debug,它的计算结果如下:
$<$<CONFIG:Debug>:Release>
$<0:Release>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7464 次 |
| 最近记录: |