📄 findqt4.cmake
字号:
# - Find QT 4# This module can be used to find Qt4.# The most important issue is that the Qt4 qmake is available via the system path.# This qmake is then used to detect basically everything else.# This module defines a number of key variables and macros. # First is QT_USE_FILE which is the path to a CMake file that can be included # to compile Qt 4 applications and libraries. By default, the QtCore and QtGui # libraries are loaded. This behavior can be changed by setting one or more # of the following variables to true before doing INCLUDE(${QT_USE_FILE}):# QT_DONT_USE_QTCORE# QT_DONT_USE_QTGUI# QT_USE_QT3SUPPORT# QT_USE_QTASSISTANT# QT_USE_QTDESIGNER# QT_USE_QTMOTIF# QT_USE_QTMAIN# QT_USE_QTNETWORK# QT_USE_QTNSPLUGIN# QT_USE_QTOPENGL# QT_USE_QTSQL# QT_USE_QTXML# QT_USE_QTSVG# QT_USE_QTTEST# QT_USE_QTUITOOLS# QT_USE_QTDBUS# QT_USE_QTSCRIPT# QT_USE_QTASSISTANTCLIENT# QT_USE_QTHELP# QT_USE_QTWEBKIT# QT_USE_QTXMLPATTERNS# QT_USE_PHONON## The file pointed to by QT_USE_FILE will set up your compile environment# by adding include directories, preprocessor defines, and populate a# QT_LIBRARIES variable containing all the Qt libraries and their dependencies.# Add the QT_LIBRARIES variable to your TARGET_LINK_LIBRARIES.## Typical usage could be something like:# FIND_PACKAGE(Qt4)# SET(QT_USE_QTXML 1)# INCLUDE(${QT_USE_FILE})# ADD_EXECUTABLE(myexe main.cpp)# TARGET_LINK_LIBRARIES(myexe ${QT_LIBRARIES})### There are also some files that need processing by some Qt tools such as moc# and uic. Listed below are macros that may be used to process those files.# # macro QT4_WRAP_CPP(outfiles inputfile ... OPTIONS ...)# create moc code from a list of files containing Qt class with# the Q_OBJECT declaration. Options may be given to moc, such as those found# when executing "moc -help"## macro QT4_WRAP_UI(outfiles inputfile ... OPTIONS ...)# create code from a list of Qt designer ui files.# Options may be given to uic, such as those found# when executing "uic -help"## macro QT4_ADD_RESOURCES(outfiles inputfile ... OPTIONS ...)# create code from a list of Qt resource files.# Options may be given to rcc, such as those found# when executing "rcc -help"## macro QT4_GENERATE_MOC(inputfile outputfile )# creates a rule to run moc on infile and create outfile.# Use this if for some reason QT4_WRAP_CPP() isn't appropriate, e.g.# because you need a custom filename for the moc file or something similar.## macro QT4_AUTOMOC(sourcefile1 sourcefile2 ... )# This macro is still experimental.# It can be used to have moc automatically handled.# So if you have the files foo.h and foo.cpp, and in foo.h a # a class uses the Q_OBJECT macro, moc has to run on it. If you don't# want to use QT4_WRAP_CPP() (which is reliable and mature), you can insert# #include "foo.moc"# in foo.cpp and then give foo.cpp as argument to QT4_AUTOMOC(). This will the# scan all listed files at cmake-time for such included moc files and if it finds# them cause a rule to be generated to run moc at build time on the # accompanying header file foo.h.# If a source file has the SKIP_AUTOMOC property set it will be ignored by this macro.## macro QT4_ADD_DBUS_INTERFACE(outfiles interface basename)# create a the interface header and implementation files with the # given basename from the given interface xml file and add it to # the list of sources## macro QT4_ADD_DBUS_INTERFACES(outfiles inputfile ... )# create the interface header and implementation files # for all listed interface xml files# the name will be automatically determined from the name of the xml file## macro QT4_ADD_DBUS_ADAPTOR(outfiles xmlfile parentheader parentclassname [basename] )# create a dbus adaptor (header and implementation file) from the xml file# describing the interface, and add it to the list of sources. The adaptor# forwards the calls to a parent class, defined in parentheader and named# parentclassname. The name of the generated files will be# <basename>adaptor.{cpp,h} where basename is the basename of the xml file.## macro QT4_GENERATE_DBUS_INTERFACE( header [interfacename] )# generate the xml interface file from the given header.# If the optional argument interfacename is omitted, the name of the # interface file is constructed from the basename of the header with# the suffix .xml appended.## macro QT4_CREATE_TRANSLATION( qm_files sources ... ts_files ... )# out: qm_files# in: sources ts_files# generates commands to create .ts (vie lupdate) and .qm# (via lrelease) - files from sources. The ts files are # created and/or updated in the source tree (unless given with full paths).# The qm files are generated in the build tree.# Updating the translations can be done by adding the qm_files# to the source list of your library/executable, so they are# always updated, or by adding a custom target to control when# they get updated/generated.## macro QT4_ADD_TRANSLATION( qm_files ts_files ... )# out: qm_files# in: ts_files# generates commands to create .qm from .ts - files. The generated# filenames can be found in qm_files. The ts_files# must exists and are not updated in any way.### QT_FOUND If false, don't try to use Qt.# QT4_FOUND If false, don't try to use Qt 4.## QT_VERSION_MAJOR The major version of Qt found.# QT_VERSION_MINOR The minor version of Qt found.# QT_VERSION_PATCH The patch version of Qt found.## QT_EDITION Set to the edition of Qt (i.e. DesktopLight)# QT_EDITION_DESKTOPLIGHT True if QT_EDITION == DesktopLight# QT_QTCORE_FOUND True if QtCore was found.# QT_QTGUI_FOUND True if QtGui was found.# QT_QT3SUPPORT_FOUND True if Qt3Support was found.# QT_QTASSISTANT_FOUND True if QtAssistant was found.# QT_QTDBUS_FOUND True if QtDBus was found.# QT_QTDESIGNER_FOUND True if QtDesigner was found.# QT_QTDESIGNERCOMPONENTS True if QtDesignerComponents was found.# QT_QTMOTIF_FOUND True if QtMotif was found.# QT_QTNETWORK_FOUND True if QtNetwork was found.# QT_QTNSPLUGIN_FOUND True if QtNsPlugin was found.# QT_QTOPENGL_FOUND True if QtOpenGL was found.# QT_QTSQL_FOUND True if QtSql was found.# QT_QTXML_FOUND True if QtXml was found.# QT_QTSVG_FOUND True if QtSvg was found.# QT_QTSCRIPT_FOUND True if QtScript was found.# QT_QTTEST_FOUND True if QtTest was found.# QT_QTUITOOLS_FOUND True if QtUiTools was found.# QT_QTASSISTANTCLIENT_FOUND True if QtAssistantClient was found.# QT_QTHELP_FOUND True if QtHelp was found.# QT_QTWEBKIT_FOUND True if QtWebKit was found.# QT_QTXMLPATTERNS_FOUND True if QtXmlPatterns was found.# QT_PHONON_FOUND True if phonon was found.### QT_DEFINITIONS Definitions to use when compiling code that uses Qt.# You do not need to use this if you include QT_USE_FILE.# The QT_USE_FILE will also define QT_DEBUG and QT_NO_DEBUG# to fit your current build type. Those are not contained# in QT_DEFINITIONS.# # QT_INCLUDES List of paths to all include directories of # Qt4 QT_INCLUDE_DIR and QT_QTCORE_INCLUDE_DIR are# always in this variable even if NOTFOUND,# all other INCLUDE_DIRS are# only added if they are found.# You do not need to use this if you include QT_USE_FILE.# ## Include directories for the Qt modules are listed here.# You do not need to use these variables if you include QT_USE_FILE.## QT_INCLUDE_DIR Path to "include" of Qt4# QT_QT_INCLUDE_DIR Path to "include/Qt" # QT_QT3SUPPORT_INCLUDE_DIR Path to "include/Qt3Support" # QT_QTASSISTANT_INCLUDE_DIR Path to "include/QtAssistant" # QT_QTCORE_INCLUDE_DIR Path to "include/QtCore" # QT_QTDESIGNER_INCLUDE_DIR Path to "include/QtDesigner" # QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR Path to "include/QtDesigner"# QT_QTDBUS_INCLUDE_DIR Path to "include/QtDBus" # QT_QTGUI_INCLUDE_DIR Path to "include/QtGui" # QT_QTMOTIF_INCLUDE_DIR Path to "include/QtMotif" # QT_QTNETWORK_INCLUDE_DIR Path to "include/QtNetwork" # QT_QTNSPLUGIN_INCLUDE_DIR Path to "include/QtNsPlugin" # QT_QTOPENGL_INCLUDE_DIR Path to "include/QtOpenGL" # QT_QTSQL_INCLUDE_DIR Path to "include/QtSql" # QT_QTXML_INCLUDE_DIR Path to "include/QtXml" # QT_QTSVG_INCLUDE_DIR Path to "include/QtSvg"# QT_QTSCRIPT_INCLUDE_DIR Path to "include/QtScript"# QT_QTTEST_INCLUDE_DIR Path to "include/QtTest"# QT_QTASSISTANTCLIENT_INCLUDE_DIR Path to "include/QtAssistant"# QT_QTHELP_INCLUDE_DIR Path to "include/QtHelp"# QT_QTWEBKIT_INCLUDE_DIR Path to "include/QtWebKit"# QT_QTXMLPATTERNS_INCLUDE_DIR Path to "include/QtXmlPatterns"# QT_PHONON_INCLUDE_DIR Path to "include/phonon"# # QT_LIBRARY_DIR Path to "lib" of Qt4# # QT_PLUGINS_DIR Path to "plugins" for Qt4# ## The Qt toolkit may contain both debug and release libraries.# In that case, the following library variables will contain both.# You do not need to use these variables if you include QT_USE_FILE,# and use QT_LIBRARIES.## QT_QT3SUPPORT_LIBRARY The Qt3Support library# QT_QTASSISTANT_LIBRARY The QtAssistant library# QT_QTCORE_LIBRARY The QtCore library# QT_QTDBUS_LIBRARY The QtDBus library# QT_QTDESIGNER_LIBRARY The QtDesigner library# QT_QTDESIGNERCOMPONENTS_LIBRARY The QtDesignerComponents library# QT_QTGUI_LIBRARY The QtGui library# QT_QTMOTIF_LIBRARY The QtMotif library# QT_QTNETWORK_LIBRARY The QtNetwork library# QT_QTNSPLUGIN_LIBRARY The QtNsPLugin library# QT_QTOPENGL_LIBRARY The QtOpenGL library# QT_QTSQL_LIBRARY The QtSql library# QT_QTXML_LIBRARY The QtXml library# QT_QTSVG_LIBRARY The QtSvg library# QT_QTSCRIPT_LIBRARY The QtScript library# QT_QTTEST_LIBRARY The QtTest library# QT_QTMAIN_LIBRARY The qtmain library for Windows# QT_QTUITOOLS_LIBRARY The QtUiTools library# QT_QTASSISTANTCLIENT_LIBRARY The QtAssistantClient library# QT_QTHELP_LIBRARY The QtHelp library# QT_QTWEBKIT_LIBRARY The QtWebKit library# QT_QTXMLPATTERNS_LIBRARY The QtXmlPatterns library# QT_PHONON_LIBRARY The phonon library# # also defined, but NOT for general use are# QT_MOC_EXECUTABLE Where to find the moc tool.# QT_UIC_EXECUTABLE Where to find the uic tool.# QT_UIC3_EXECUTABLE Where to find the uic3 tool.# QT_RCC_EXECUTABLE Where to find the rcc tool# QT_DBUSCPP2XML_EXECUTABLE Where to find the qdbuscpp2xml tool.# QT_DBUSXML2CPP_EXECUTABLE Where to find the qdbusxml2cpp tool.# QT_LUPDATE_EXECUTABLE Where to find the lupdate tool.# QT_LRELEASE_EXECUTABLE Where to find the lrelease tool.# # QT_DOC_DIR Path to "doc" of Qt4# QT_MKSPECS_DIR Path to "mkspecs" of Qt4### These are around for backwards compatibility # they will be set# QT_WRAP_CPP Set true if QT_MOC_EXECUTABLE is found# QT_WRAP_UI Set true if QT_UIC_EXECUTABLE is found# # These variables do _NOT_ have any effect anymore (compared to FindQt.cmake)# QT_MT_REQUIRED Qt4 is now always multithreaded# # These variables are set to "" Because Qt structure changed # (They make no sense in Qt4)# QT_QT_LIBRARY Qt-Library is now splitINCLUDE(CheckSymbolExists)INCLUDE(MacroAddFileDependencies)SET(QT_USE_FILE ${CMAKE_ROOT}/Modules/UseQt4.cmake)SET( QT_DEFINITIONS "")SET(QT4_INSTALLED_VERSION_TOO_OLD FALSE)# macro for asking qmake to process pro filesMACRO(QT_QUERY_QMAKE outvar invar) IF(QT_QMAKE_EXECUTABLE) FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake/tmp.pro "message(CMAKE_MESSAGE<$$${invar}>)") # Invoke qmake with the tmp.pro program to get the desired # information. Use the same variable for both stdout and stderr # to make sure we get the output on all platforms. EXECUTE_PROCESS(COMMAND ${QT_QMAKE_EXECUTABLE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake OUTPUT_VARIABLE _qmake_query_output RESULT_VARIABLE _qmake_result ERROR_VARIABLE _qmake_query_output ) FILE(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmpQmake") IF(_qmake_result) MESSAGE(WARNING " querying qmake for ${invar}. qmake reported:\n${_qmake_query_output}") ELSE(_qmake_result) STRING(REGEX REPLACE ".*CMAKE_MESSAGE<([^>]*).*" "\\1" ${outvar} "${_qmake_query_output}") ENDIF(_qmake_result) ENDIF(QT_QMAKE_EXECUTABLE)ENDMACRO(QT_QUERY_QMAKE)GET_FILENAME_COMPONENT(qt_install_version "[HKEY_CURRENT_USER\\Software\\trolltech\\Versions;DefaultQtVersion]" NAME)# check for qmakeFIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake qmake4 qmake-qt4 PATHS "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin" "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin" "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]/bin" $ENV{QTDIR}/bin)IF (QT_QMAKE_EXECUTABLE) SET(QT4_QMAKE_FOUND FALSE) EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION) # check for qt3 qmake and then try and find qmake4 or qmake-qt4 in the path IF("${QTVERSION}" MATCHES "Unknown") SET(QT_QMAKE_EXECUTABLE NOTFOUND CACHE FILEPATH "" FORCE) FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake4 qmake-qt4 PATHS "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin" "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -