在CMAKE中正确设置Visual Studio链接器标志/ SUBSYSTEM

ben*_*der 6 c++ linker cmake visual-studio

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

/SUBSYSTEM:WINDOWS,"5.01"
Run Code Online (Sandbox Code Playgroud)

我在cmake中尝试通过添加以下内容:

set_target_properties(mytarget PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS,\"5.01\"")
Run Code Online (Sandbox Code Playgroud)

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

这样,子系统标志不会被识别并设置为CONSOLE

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

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

Zou*_*uch 22

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

add_executable(${PROJECT_NAME} WIN32 main.cpp)
Run Code Online (Sandbox Code Playgroud)


小智 5

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

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
Run Code Online (Sandbox Code Playgroud)

  • 当“${CMAKE_EXE_LINKER_FLAGS}”字符串包含“/subsystem:console”时,此答案无效。最好使用[@Zouch](/sf/users/330246381/)提供的[解决方案](/sf/answers/4035166411/)。 (3认同)