如何让我的Qt C ++程序在Windows中打开控制台?

时间:2011-11-23 21:02:51

标签: c++ windows qt console cmake

我正在Qt Creator中创建一个应用程序,cmake和MinGW作为编译器。我已经看到这个问题正在为其他人解答,但他们使用.pro文件的常规Qt项目,而我使用CMakeLists.txt文件。所以这些帖子对我没用。

问题是我的应用程序在启动时会打开一个控制台,像往常一样,关闭此控制台也会关闭该应用程序。我想让应用程序不要打开一个控制台,这样对于那些不需要任何调试信息的人来说,它更加用户友好。

4 个答案:

答案 0 :(得分:4)

您很可能在CMakeLists.txt中有如下所示的行:

ADD_EXECUTABLE(exename ....)

当然,点是进一步的论据。将其更改为:

ADD_EXECUTABLE(exename [WIN32] ...)

指定它是Win32应用程序而不是控制台应用程序。

或者,可以找到on the CMAKE website“如果给出了WIN32,则会在创建的目标上设置属性WIN32_EXECUTABLE。”当设置WIN32_EXECUTABLE时,它将为“Build an executable with a WinMain entry point on windows”。

答案 1 :(得分:1)

我有同样的问题,但通过添加:

解决了这个问题
#CMakeLists.txt
# ... some text (like finding QT)

LINK_LIBRARIES(${QT_QTMAIN_LIBRARY})

# ... and then

ADD_EXECUTABLE(my_qt_project WIN32 ... )

如果我不使用LINK_LIBRARIES(${QT_QTMAIN_LIBRARY}),我会收到错误:

error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

答案 2 :(得分:0)

使用Mingw构建时,添加一个CMake命令:

set_target_properties(target_name PROPERTIES LINK_FLAGS "-mwindows")

target_name替换为目标名称(add_executable的第一个参数)

答案 3 :(得分:0)

这是一个老问题,但无论如何,有一个比这里发布的所有其他更好的解决方案:

MyComponent

添加此功能将自动为您处理所有事情。如果你没有设定这个政策,CMake实际上应该输出警告,至少我是如何了解它的存在。