Qt Framework
← Qt Main Window | ● | QGL Introduction →
The previously drescribed Qt modules make up a basic Qt application that serves as framework for upcoming applications. It is also available from svn:
svn co svn://schorsch.efi.fh-nuernberg.de/qt-framework
It is also available in the WebSVN frontend:
To compile it we use CMake.
We assume that there is a main module main.cpp and one additional module that contains the main window class in mainwindow.cpp/.h. Then the CMake file needs to take care of the MOCification of those two application modules. CMake handles that automatically if told so:
# cmake build file
PROJECT(MyQtProject)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
# application name
SET(APPNAME myqtapp)
# non-standard path to Qt4
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH};
/usr/local/Trolltech/Qt-4.7.4;
)
# Qt4 dependency
SET(QT_USE_QTOPENGL TRUE)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui REQUIRED)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
# OpenGL dependency
FIND_PACKAGE(OpenGL)
# header list
SET(LIB_HDRS
mainwindow.h
)
# module list
SET(LIB_SRCS
mainwindow.cpp
)
# moc
QT4_WRAP_CPP(MOC_OUTFILES ${LIB_HDRS})
# library
SET(LIB_NAME ${PROJECT_NAME})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
ADD_LIBRARY(${LIB_NAME} ${LIB_SRCS} ${LIB_HDRS} ${MOC_OUTFILES})
# executable
ADD_EXECUTABLE(${APPNAME} MACOSX_BUNDLE main.cpp)
TARGET_LINK_LIBRARIES(${APPNAME}
${LIB_NAME}
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
)
# install target
INSTALL(
TARGETS ${APPNAME}
RUNTIME DESTINATION bin
BUNDLE DESTINATION /Applications
)
# install .desktop file for KDE4 (and Gnome)
IF (UNIX AND NOT APPLE)
INSTALL(FILES ${APPNAME}.desktop DESTINATION /usr/share/applications)
ENDIF (UNIX AND NOT APPLE)
Once we compiled the Qt application with
cmake . && make
we install the application with
sudo make install
This creates an application bundle in /Applications on MacOS X or installs the application with a respective .desktop file for Gnome and KDE to be available through the start menu on Ubuntu or OpenSuse.
← Qt Main Window | ● | QGL Introduction →