我将 CMake v3.13.4 与Visual Studio 2017 Win64
生成器一起使用,我需要修改 Visual Studio Librarian 的命令行选项(用于 CMake 对象库)。
为了实现这一点,CMake 提供了STATIC_LIBRARY_OPTIONS
可以通过set_property
andset_target_properties
命令设置的目标属性。
文档状态STATIC_LIBRARY_OPTIONS
支持生成器表达式:
的内容
STATIC_LIBRARY_OPTIONS
可以使用带有语法的“生成器表达式”$<...>
。有关可用表达式,请参阅cmake-generator-expressions(7) 手册。有关定义构建系统属性的更多信息,请参阅cmake-buildsystem(7) 手册。
但是:无论我尝试什么,这些值都没有正确转义',例如
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_OPTIONS
orset_property
命令set_target_properties
?