[visual-studio]QtCreator 是如何能够避免控制台窗口中生成一个 Windows 应用程序时吗?

发布时间: 2014/3/1 4:32:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想生成使用 CMake、 Qt 和 Visual Studio 不会显示控制台窗口中的可执行文件。

我发现这个职位和这个答案

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:mainCRTStartup")

但我在想如何 QtCreator 能够生成可执行文件,不会显示控制台窗口,如果没有此 /ENTRY 标志吗?

解决方法 1:

为了避免在 Qt 项目中,使用 CMake 和 Visual Studio,一个控制台窗口中 CMakeLists.txt 的四个条目是必要的:

  1. 集 (QT_USE_QMAIN true)
  2. INCLUDE(${QT_USE_FILE})
  3. $ {QT_LIBARIES}
  4. 将 WIN32 添加到 ADD_EXECUTABLE

ADD_EXECUTABLE 看看,然后像这样:

     ADD_EXECUTABLE(YourProject WIN32
           ...stuff...
     )

Visual Studio 为所有四个步骤是必要的。第 4 步 MinGW 似乎是足够。第 1 步必须放在第 2 步之前。

这些步骤是做什么的?

QT_USE_QMAIN 定义在 include/QtGui/qwindowdefs.h 中的 Qt 来源。令人惊讶它不执行任何其他,但:

#if defined(QT_NEEDS_QMAIN)
#define main qMain
#endif

与此 Qt 定义其自己的入口点。当然,这需要 qMain 以某一位置定义。因此有必要以包括一个额外的图书馆,称为 QtMain.lib。

第 2 步是通常的 CMake 方法,来查找库。在这种情况下它包括: path/cmake-2.8/Modules/UseQt4.cmake (Qt4)。

第 3 步实际上链接找到的 QtMain.lib。

第 4 步导致 Windows 使用 /subsystem:windows 而不是 /subsystem:console

关于这一点,好的事情是第 1-3 步可能没有必要下 MinGW,但是不要伤害也。所以没有必要区分 Visual Studio 和 MinGW。然而,我测试了只有用 Qt4。它可能为 Qt5 不同。

赞助商