首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake:如何使用依赖于构建配置的值为用户宏添加自定义变量?

CMake:如何使用依赖于构建配置的值为用户宏添加自定义变量?
EN

Stack Overflow用户
提问于 2020-01-24 15:32:53
回答 1查看 293关注 0票数 1

我使用的是CMake版本3.16。

我尝试了以下几点:

代码语言:javascript
复制
set_property(TARGET ${PLUGIN_NAME} PROPERTY VS_GLOBAL_FR_VERSION 
    $<$<CONFIG:Debug2017>:"2017">
    $<$<CONFIG:Release2017>:"2017">
    $<$<CONFIG:Debug2018>:"2018">
    $<$<CONFIG:Release2018>:"2018">
    $<$<CONFIG:Debug2019>:"2019">
    $<$<CONFIG:Release2019>:"2019">
)

这有点管用..。

这个变量(FR_VERSION)应该在构建后启动的脚本中使用。这就是它的样子:

代码语言:javascript
复制
add_custom_command(TARGET ${PLUGIN_NAME} POST_BUILD
    COMMAND echo $(FR_VERSION)
    COMMENT "This command will copy files to dist"
    VERBATIM
)

然而,在Visual中,我们得到了以下内容:

代码语言:javascript
复制
echo $<$<CONFIG:Debug2017>:"2017">;$<$<CONFIG:Release2017>:"2017">;$<$<CONFIG:Debug2018>:"2018">;$<$<CONFIG:Release2018>:"2018">;$<$<CONFIG:Debug2019>:"2019">;$<$<CONFIG:Release2019>:"2019">

它无法使用错误消息执行:

代码语言:javascript
复制
"The syntax of the command is incorrect."

如果我不尝试为不同的构建设置一个不同的值,如下所示:

代码语言:javascript
复制
set_target_properties(${MAYA_PLUGIN_NAME} PROPERTIES VS_GLOBAL_FR_MAYA_VERSION "2018")

然后按预期生成后构建脚本。(但我不能接受这一点,因为对于不同的构建配置,我需要不同的参数值)。

我希望在这一点上有任何建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-24 16:00:42

一些目标属性支持生成器表达式,而另一些则不支持生成器表达式。属性的文档将显式表示支持生成器表达式。以COMPILE_FEATURES属性为例:

内容的COMPILE_FEATURES可以使用“生成器表达式”的语法$<...>

VS_GLOBAL_的文档没有这样的语言。因此,正如建议的那样,可以将生成器表达式直接放在add_custom_command()调用中,这是支持的:

代码语言:javascript
复制
add_custom_command(TARGET ${PLUGIN_NAME} POST_BUILD
    COMMAND echo $<$<CONFIG:Debug2017>:"2017">
        $<$<CONFIG:Release2017>:"2017">
        $<$<CONFIG:Debug2018>:"2018">
        $<$<CONFIG:Release2018>:"2018">
        $<$<CONFIG:Debug2019>:"2019">
        $<$<CONFIG:Release2019>:"2019">
    COMMENT "This command will copy files to dist"
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59899487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档