CMake/Tutorials/Qt: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
(Created page with "A typical CMakeLists.txt file for a Qt project looks like this: <source lang="cmake"> cmake_minimum_required(VERSION 2.6) PROJECT(TestProject) FIND_PACKAGE(Qt4 REQUIRED) INCLUD...")
 
(Replace content with link to new CMake community wiki)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
A typical CMakeLists.txt file for a Qt project looks like this:
{{CMake/Template/Moved}}


<source lang="cmake">
This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Qt here].
cmake_minimum_required(VERSION 2.6)
PROJECT(TestProject)
 
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
 
QT4_WRAP_UI(UISrcs MyWidget.ui)
QT4_WRAP_CPP(MOCSrcs MyWidget.h)
 
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 
ADD_EXECUTABLE(MyProject main.cpp MyWidget.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(FileMenu ${QT_LIBRARIES})
</source>
 
However, when you build and run in Windows, you will get a console window that appears along with your GUI program. To fix this, you must do two things. First, add ${QT_QTMAIN_LIBRARY} to your target_link_libraries command. Second, you must specify /SUBSYSTEM:WINDOWS for all build configurations (Release, Debug, etc) that you want to not pop up the console window. An example is below, where when built in release mode, no console will appear:
 
<source lang="cmake">
cmake_minimum_required(VERSION 2.6)
 
PROJECT(FileMenu)
 
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
 
QT4_WRAP_UI(UISrcs MyWidget.ui)
QT4_WRAP_CPP(MOCSrcs MyWidget.h)
 
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
 
ADD_EXECUTABLE(TestProject main.cpp MyWidget.cpp ${MOCSrcs} ${UISrcs})
TARGET_LINK_LIBRARIES(FileMenu ${QT_QTMAIN_LIBRARY} ${QT_LIBRARIES})
 
set_target_properties(FileMenu PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
 
</source>
 
If you want to set this for all build modes, simply use:
<source lang="cmake">
set_target_properties(FileMenu PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") # works for all build modes
</source>

Latest revision as of 15:40, 30 April 2018


The CMake community Wiki has moved to the Kitware GitLab Instance.

This page has moved here.