【问题标题】:Correctly set Visual Studio linker flag /SUBSYSTEM in CMAKE在 CMAKE 中正确设置 Visual Studio 链接器标志 /SUBSYSTEM
【发布时间】:2016-02-25 17:14:16
【问题描述】:

我正在尝试使用 cmake 设置一个旧项目,并且我希望所有标志都与以前相同。 旧项目生成器的链接器标志 /SUBSYSTEM 与最小子系统版本号 5.01 设置如下:

/SUBSYSTEM:WINDOWS,"5.01"

我在 cmake 中尝试了同样的方法,添加了这个:

set_target_properties(mytarget PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,\"5.01\"")

但是结果是错误的。 Cmake 似乎删除了(转义的)双引号并将链接器标志放置在 Visual Studio 项目中的“添加选项”中:/SUBSYSTEM:WINDOWS,5.01

这样子系统标志无法识别并设置为CONSOLE

我尝试了几种组合如何将最小版本,"5.01" 添加到子系统标志但没有成功。

还有其他方法可以将最小子系统版本号添加到 /SUBSYSTEM 标志吗?

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?
  • 我的 Visual Studio 版本是 2012,但它也应该适用于 2003,因为这是我的发布编译器。
  • 你试过双重转义\\\"5.01\\\"。前段时间我看到一些关于某些属性的奇怪转义规则的邮件,当正确的转义甚至取决于正在使用的生成器时。
  • 我也试过了,结果是\"5.01\"。无论如何,谢谢你的评论。我现在使用没有最小版本的/SUBSYSTEM:WINDOWS,因为它似乎不起作用。

标签: c++ visual-studio linker cmake


【解决方案1】:

您可以在add_executable 函数中简单地使用[WIN32] 标志:

add_executable(${PROJECT_NAME} WIN32 main.cpp)

【讨论】:

    【解决方案2】:

    很长一段时间回答,但我已经找到了解决方案:

    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
    

    【讨论】:

    • ${CMAKE_EXE_LINKER_FLAGS} 字符串包含/subsystem:console 时,此答案无效。最好使用@Zouch提供的solution
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2020-01-28
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多