gpt4 book ai didi

visual-studio - 带有使用多个值的生成器表达式的 CMake set_property 命令

转载 作者:行者123 更新时间:2023-12-05 01:41:01 28 4
gpt4 key购买 nike

我将 CMake v3.13.4 与 Visual Studio 2017 Win64 一起使用生成器,我需要修改 Visual Studio Librarian 的命令行选项(对于 CMake 对象库)。

为了实现这一目标,CMake 提供了目标属性 STATIC_LIBRARY_OPTIONS 可以通过 set_property 设置和 set_target_properties命令。

文档指出STATIC_LIBRARY_OPTIONS支持生成器表达式:

Contents of STATIC_LIBRARY_OPTIONS may use “generator expressions” with the syntax $<...>. See the cmake-generator-expressions(7) manual for available expressions. See the cmake-buildsystem(7) manual for more on defining buildsystem properties.

但是:无论我尝试什么,这些值都没有正确转义,例如

set_property(TARGET object_library PROPERTY STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>)

在 Visual Studio 中导致以下结果:

All Options: `/OUT:"..." /LTCG /MACHINE:X64 /NOLOGO 
Additional Options: %(AdditionalOptions) /machine:x64 ""$"<1:/WX" "/ERRORREPORT:NONE>"

我尝试了以下方法,但似乎都失败了。

set_property(TARGET object_library PROPERTY
STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>
#STATIC_LIBRARY_OPTIONS "$<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>"
#STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:"/WX /NOLOGO /LTCG /ERRORREPORT:NONE">
#STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>
#STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE>
#STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:"/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE">
#STATIC_LIBRARY_OPTIONS "$<$<CONFIG:Release>:/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE>"
)

所以我的问题是:如何使用生成器表达式将多个值传递给 STATIC_LIBRARY_OPTIONSset_propertyset_target_properties命令?

最佳答案

感谢@Tsyvarev,我已经能够解决这个问题。解决方案是将每个值包装到它自己的生成器表达式中:

set_property(TARGET object_library PROPERTY
STATIC_LIBRARY_OPTIONS
$<$<CXX_COMPILER_ID:MSVC>:/WX>
$<$<CXX_COMPILER_ID:MSVC>:/NOLOGO>
$<$<CXX_COMPILER_ID:MSVC>:/ERRORREPORT:NONE>
$<$<CXX_COMPILER_ID:MSVC>:$<$<CONFIG:Release>:/LTCG>>
)

关于visual-studio - 带有使用多个值的生成器表达式的 CMake set_property 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55262774/

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