当前位置:  开发笔记 > 编程语言 > 正文

在cmake中"$ <$ <CONFIG:Debug>:Release>"是什么意思?

如何解决《在cmake中"$<$<CONFIG:Debug>:Release>"是什么意思?》经验,为你挑选了1个好方法。

在buildem_cmake_recipe.cmake中,我看到了一个表达式:

    externalproject_add_step(${_name} BuildOtherConfig
                        COMMAND ${CMAKE_COMMAND} --build ${BINARY_DIR} --config "$<$:Release>$<$:Debug>" --target INSTALL
                        DEPENDEES install
                        )

$<$:Release>$<$:Debug>意味着什么?



1> Reinstate Mo..:

这是一个CMake 生成器表达式.您可以按照链接进行全面讨论,了解这些内容以及它们可以执行的操作.简而言之,它是CMake将在生成时评估的一段文本(当它完成解析所有CMakeLists并生成构建系统时); 它可以为每个配置评估不同的值.

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

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

因此,如果当前配置是Debug,则整个表达式将计算为Release.如果当前配置发布,它将评估为Debug.请注意,添加的步骤称为"BuildOtherConfig",因此这种反转逻辑是有意义的.


如何工作,更详细一点:

$

这将评估1当前配置是否为Debug,0否则为.

$<1:X>

评估到X.

$<0:X>

计算为空字符串(无值).

把它放在一起,我们有$<$:Release>.当前配置是Debug,它的评估如下:

$<$:Release>
$<1:Release>
Release

当前配置不是时Debug,它的计算结果如下:

$<$:Release>
$<0:Release>

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有