CMake と Visual Studio を使用する Qt プロジェクトでコンソール ウィンドウを回避するには、CMakeLists.txt に 4 つのエントリが必要です。
- SET(QT_USE_QMAIN 真)
- INCLUDE(${QT_USE_FILE})
- ${QT_LIBARIES}
- ADD_EXECUTABLE に WIN32 を追加
ADD_EXECUTABLE は次のようになります。
ADD_EXECUTABLE(YourProject WIN32
...stuff...
)
Visual Studio の場合、4 つの手順すべてが必要です。MinGW の場合、ステップ 4 で十分なようです。ステップ 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 の方法です。この場合、パス/cmake-2.8/Modules/UseQt4.cmake (Qt4) が含まれます。
手順 3 では、見つかった QtMain.lib を実際にリンクします。
ステップ 4 により、Windows は /subsystem:console の代わりに /subsystem:windows を使用します。
これの良いところは、MinGW ではステップ 1 から 3 が必要ないかもしれないということですが、どちらも問題ありません。したがって、Visual Studio と MinGW を区別する必要はありません。ただし、Qt4 のみでテストしました。Qt5 では異なる場合があります。