McL*_*ary 1 c++ qt cmake visual-studio windows-console
我试图使用不显示控制台窗口的CMake,Qt和Visual Studio构建可执行文件.
我发现这篇文章和这个答案
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:mainCRTStartup")
Run Code Online (Sandbox Code Playgroud)
但是我想知道QtCreator如何能够构建一个没有这个/ ENTRY标志的可执行文件而不显示控制台窗口?
要避免使用CMake和Visual Studio的Qt项目中的控制台窗口,CMakeLists.txt中的四个条目是必需的:
ADD_EXECUTABLE看起来像这样:
ADD_EXECUTABLE(YourProject WIN32
...stuff...
)
Run Code Online (Sandbox Code Playgroud)
对于Visual Studio,所有四个步骤都是必需的.对于MinGW,步骤4似乎就足够了.步骤1 必须在步骤2之前.
这些步骤有什么作用?
QT_USE_QMAIN include/QtGui/qwindowdefs.h在Qt源中定义.令人惊讶的是它没有别的,但是:
#if defined(QT_NEEDS_QMAIN)
#define main qMain
#endif
Run Code Online (Sandbox Code Playgroud)
有了这个Qt定义了自己的入口点.当然,这需要在某处定义qMain.因此,有必要包含一个额外的库,称为QtMain.lib.
第2步是查找库的常用CMake方法.在这种情况下,它包括:path/cmake-2.8/Modules/UseQt4.cmake(Qt4).
第3步实际链接找到的QtMain.lib.
步骤4使Windows使用/ subsystem:windows而不是/ subsystem:console
关于这个的好处是,在MinGW下可能没有必要采取步骤1-3,但也不要伤害.因此无需区分Visual Studio和MinGW.但是,我只测试了Qt4.Qt5可能有所不同.
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |