Flo*_*ers 4 build cmake visual-studio cmake-language
我将 CMake v3.13.4 与Visual Studio 2017 Win64
生成器一起使用,我需要修改 Visual Studio Librarian(对于 CMake 对象库)的命令行选项。
为了实现这一点,CMake 提供了可以通过and命令STATIC_LIBRARY_OPTIONS
设置的目标属性。set_property
set_target_properties
文档指出STATIC_LIBRARY_OPTIONS
支持生成器表达式:
\n\n\n的内容
\nSTATIC_LIBRARY_OPTIONS
可以使用 \xe2\x80\x9c 生成器表达式\xe2\x80\x9d 和\n 语法$<...>
。有关可用表达式,请参阅cmake-generator-expressions(7) \n 手册。有关定义构建系统属性的更多信息,请参阅cmake-buildsystem(7) \n 手册。
但是:无论我尝试什么,这些值都没有正确转义\xc2\xb4,例如
\n\nset_property(TARGET object_library PROPERTY STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>)\n
Run Code Online (Sandbox Code Playgroud)\n\n在 Visual Studio 中会导致以下结果:
\n\nAll Options: `/OUT:"..." /LTCG /MACHINE:X64 /NOLOGO \nAdditional Options: %(AdditionalOptions) /machine:x64 ""$"<1:/WX" "/ERRORREPORT:NONE>"\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试了以下方法,但似乎都失败了。
\n\nset_property(TARGET object_library PROPERTY\n STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>\n #STATIC_LIBRARY_OPTIONS "$<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>"\n #STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:"/WX /NOLOGO /LTCG /ERRORREPORT:NONE">\n #STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX /NOLOGO /LTCG /ERRORREPORT:NONE>\n #STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE>\n #STATIC_LIBRARY_OPTIONS $<$<CONFIG:Release>:"/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE">\n #STATIC_LIBRARY_OPTIONS "$<$<CONFIG:Release>:/WX;/NOLOGO;/LTCG;/ERRORREPORT:NONE>"\n )\n
Run Code Online (Sandbox Code Playgroud)\n\n所以我的问题是:如何使用生成器表达式通过STATIC_LIBRARY_OPTIONS
orset_property
命令传递多个值set_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>>
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4526 次 |
最近记录: |