gpt4 book ai didi

cmake - cmake中的“$ <$ :Release>”是什么意思?

转载 作者:行者123 更新时间:2023-12-04 03:07:02 25 4
gpt4 key购买 nike

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
)


$<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug>在这里是什么意思?

最佳答案

那是CMake generator expression。您可以点击链接以全面讨论它们是什么以及它们可以做什么。简而言之,这是一段文本,CMake将在生成时对其进行评估(当它完成对所有CMakeList的解析并生成了构建系统时);对于每种配置,它可以评估为不同的值。

您那里的那个大概意味着这个(伪代码):

if current_configuration == "Debug"
output "Release"
if current_configureation == "Release"
output "Debug"


因此,如果当前配置为Debug,则整个表达式的计算结果为 Release。如果当前配置为Release,它将评估为 Debug。请注意,所添加的步骤称为“ BuildOtherConfig”,因此这种反向逻辑很有意义。



如何工作,更详细一点:

$<CONFIG:Debug>


如果当前配置为 1,则结果为 Debug,否则为 0

$<1:X>


评估为 X

$<0:X>


评估为空字符串(无值)。

放在一起,我们有 $<$<CONFIG:Debug>:Release>。当前配置为 Debug时,其评估结果如下:

$<$<CONFIG:Debug>:Release>
$<1:Release>
Release


当前配置不是 Debug时,其评估结果如下:

$<$<CONFIG:Debug>:Release>
$<0:Release>

关于cmake - cmake中的“$ <$ <CONFIG:Debug>:Release>”是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com