我正在Qt Creator中创建一个应用程序,cmake和MinGW作为编译器。我已经看到这个问题正在为其他人解答,但他们使用.pro文件的常规Qt项目,而我使用CMakeLists.txt文件。所以这些帖子对我没用。
问题是我的应用程序在启动时会打开一个控制台,像往常一样,关闭此控制台也会关闭该应用程序。我想让应用程序不要打开一个控制台,这样对于那些不需要任何调试信息的人来说,它更加用户友好。
答案 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实际上应该输出警告,至少我是如何了解它的存在。