CMake:如何使用不同的ADD_EXECUTABLE进行调试生成? [英] CMake: How to use different ADD_EXECUTABLE for debug build?

查看:2890
本文介绍了CMake:如何使用不同的ADD_EXECUTABLE进行调试生成?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想建立我的应用程序,使调试模式是一个控制台应用程序,释放模式是一个Win32应用程序。按照文档我需要添加 WIN32 add_executable ,具体取决于我是否需要控制台应用程序。

I'd like to build my application such that debug mode is a console application and release mode is a Win32 application. According to the documentation I need to add WIN32 to add_executable depending on whether I want a console application or not.

因为我使用Visual Studio,我不能使用 CMAKE_BUILD_TYPE (生成的项目包含多个配置)。我怎么能告诉CMake的使用 WIN32 的发布版本,而忽略它的调试版本?

Because I'm using Visual Studio, I can't use CMAKE_BUILD_TYPE (the generated project contains multiple configurations). How can I tell CMAKE to use WIN32 for release builds and omit it for debug builds?

推荐答案

http://www.cmake.org/Wiki/VSConfigSpecificSettings

if(WIN32)
   set_target_properties(WindowApplicationExample PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
   set_target_properties(WindowApplicationExample PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
   set_target_properties(WindowApplicationExample PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
   set_target_properties(WindowApplicationExample PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE")
   set_target_properties(WindowApplicationExample PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:windows")
   set_target_properties(WindowApplicationExample PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:windows")
endif(WIN32)

UPDATE :此功能在最近的版本中已损坏,原因是错误。我发现一个解决方法是指定/ SUBSYSTEM:windows而不是/ SUBSYSTEM:WINDOWS。这似乎工作的原因。

UPDATE: This feature is broken in recent versions due to a bug. One workaround I've found is to specify "/SUBSYSTEM:windows" instead of "/SUBSYSTEM:WINDOWS". That seems to work for some reason.

这篇关于CMake:如何使用不同的ADD_EXECUTABLE进行调试生成?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆