Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio CMake:如何为用户宏添加一个自定义变量,该变量的值取决于构建配置?_Visual Studio_Cmake - Fatal编程技术网

Visual studio CMake:如何为用户宏添加一个自定义变量,该变量的值取决于构建配置?

Visual studio CMake:如何为用户宏添加一个自定义变量,该变量的值取决于构建配置?,visual-studio,cmake,Visual Studio,Cmake,我使用CMake版本3.16 我尝试了以下方法: set_property(TARGET ${PLUGIN_NAME} PROPERTY VS_GLOBAL_FR_VERSION $<$<CONFIG:Debug2017>:"2017"> $<$<CONFIG:Release2017>:"2017"> $<$<CONFIG:Debug2018>:"2018"> $<$<CONFI

我使用CMake版本3.16

我尝试了以下方法:

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">
)
echo $<$<CONFIG:Debug2017>:"2017">;$<$<CONFIG:Release2017>:"2017">;$<$<CONFIG:Debug2018>:"2018">;$<$<CONFIG:Release2018>:"2018">;$<$<CONFIG:Debug2019>:"2019">;$<$<CONFIG:Release2019>:"2019">
然而,在Visual Studio中,我们得到了以下结果:

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">
)
echo $<$<CONFIG:Debug2017>:"2017">;$<$<CONFIG:Release2017>:"2017">;$<$<CONFIG:Debug2018>:"2018">;$<$<CONFIG:Release2018>:"2018">;$<$<CONFIG:Debug2019>:"2019">;$<$<CONFIG:Release2019>:"2019">
如果我不尝试为不同的生成配置设置不同的值,如下所示:

set_target_properties(${MAYA_PLUGIN_NAME} PROPERTIES VS_GLOBAL_FR_MAYA_VERSION "2018")
然后按预期生成生成生成后脚本。(但这对我来说是不可接受的,因为对于不同的构建配置,我需要不同的参数值)


我希望您能给我一些建议。

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

COMPILE\u功能的内容可以使用语法为
$
的“生成器表达式”

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

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"
)
add_custom_命令(目标${PLUGIN_NAME}POST_BUILD
命令回音$
$
$
$
$
$
注释“此命令将文件复制到dist”
)

是否尝试使用生成器表达式而不是
$()
?还是改用
${}
呢?是的,这很有效,谢谢!需要删除逐字标记吗though@DmitriiMotorygin很高兴它起作用了!修正了移除该标志的答案。谢谢