📄 findqt4.cmake
字号:
QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "") MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) ENDFOREACH (_current_MOC_INC) ENDIF(_match) ENDIF ( NOT _skip AND EXISTS ${_abs_FILE} ) ENDFOREACH (_current_FILE) ENDMACRO(QT4_AUTOMOC) MACRO(QT4_CREATE_TRANSLATION _qm_files) SET(_my_sources) SET(_my_tsfiles) FOREACH (_file ${ARGN}) GET_FILENAME_COMPONENT(_ext ${_file} EXT) GET_FILENAME_COMPONENT(_abs_FILE ${_file} ABSOLUTE) IF(_ext MATCHES "ts") LIST(APPEND _my_tsfiles ${_abs_FILE}) ELSE(_ext MATCHES "ts") LIST(APPEND _my_sources ${_abs_FILE}) ENDIF(_ext MATCHES "ts") ENDFOREACH(_file) FOREACH(_ts_file ${_my_tsfiles}) ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file} COMMAND ${QT_LUPDATE_EXECUTABLE} ARGS ${_my_sources} -ts ${_ts_file} DEPENDS ${_my_sources}) ENDFOREACH(_ts_file) QT4_ADD_TRANSLATION(${_qm_files} ${_my_tsfiles}) ENDMACRO(QT4_CREATE_TRANSLATION) MACRO(QT4_ADD_TRANSLATION _qm_files) FOREACH (_current_FILE ${ARGN}) GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE) SET(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") ADD_CUSTOM_COMMAND(OUTPUT ${qm} COMMAND ${QT_LRELEASE_EXECUTABLE} ARGS ${_abs_FILE} -qm ${qm} DEPENDS ${_abs_FILE} ) SET(${_qm_files} ${${_qm_files}} ${qm}) ENDFOREACH (_current_FILE) ENDMACRO(QT4_ADD_TRANSLATION) ###################################### # # decide if Qt got found # ###################################### # if the includes,libraries,moc,uic and rcc are found then we have it IF( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE AND QT_QTCORE_LIBRARY) SET( QT4_FOUND "YES" ) INCLUDE(FindPackageMessage) FIND_PACKAGE_MESSAGE(Qt4 "Found Qt-Version ${QTVERSION}" "[${QT_LIBRARY_DIR}][${QT_INCLUDE_DIR}][${QT_MOC_EXECUTABLE}][${QT_UIC_EXECUTABLE}][${QT_RCC_EXECUTABLE}]") ELSE( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE AND QT_QTCORE_LIBRARY) SET( QT4_FOUND "NO") SET(QT_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}-NOTFOUND" CACHE FILEPATH "Invalid qmake found" FORCE) IF( Qt4_FIND_REQUIRED) MESSAGE( FATAL_ERROR "Qt libraries, includes, moc, uic or/and rcc NOT found!") ENDIF( Qt4_FIND_REQUIRED) ENDIF( QT_LIBRARY_DIR AND QT_INCLUDE_DIR AND QT_MOC_EXECUTABLE AND QT_UIC_EXECUTABLE AND QT_RCC_EXECUTABLE AND QT_QTCORE_LIBRARY) SET(QT_FOUND ${QT4_FOUND}) ####################################### # # Qt configuration # ####################################### IF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") FILE(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents) STRING(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}") STRING(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}") STRING(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}") ENDIF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") IF("${QT_EDITION}" MATCHES "DesktopLight") SET(QT_EDITION_DESKTOPLIGHT 1) ENDIF("${QT_EDITION}" MATCHES "DesktopLight") ############################################### # # configuration/system dependent settings # ############################################### # find dependencies for some Qt modules # when doing builds against a static Qt, they are required # when doing builds against a shared Qt, they are sometimes not required # even some Linux distros do not require these dependencies # if a user needs the dependencies, and they couldn't be found, they can set # the variables themselves. SET(QT_QTGUI_LIB_DEPENDENCIES "") SET(QT_QTCORE_LIB_DEPENDENCIES "") SET(QT_QTNETWORK_LIB_DEPENDENCIES "") SET(QT_QTOPENGL_LIB_DEPENDENCIES "") SET(QT_QTDBUS_LIB_DEPENDENCIES "") SET(QT_QTHELP_LIB_DEPENDENCIES ${QT_QTCLUCENE_LIBRARY}) # build using shared Qt needs -DQT_DLL IF(NOT QT_CONFIG MATCHES "static") # warning currently only qconfig.pri on Windows potentially contains "static" # so QT_DLL might not get defined properly on other platforms. SET(QT_DEFINITIONS ${QT_DEFINITIONS} -DQT_DLL) ENDIF(NOT QT_CONFIG MATCHES "static") # QtOpenGL dependencies QT_QUERY_QMAKE(QMAKE_LIBS_OPENGL "QMAKE_LIBS_OPENGL") SET (QT_QTOPENGL_LIB_DEPENDENCIES ${QT_QTOPENGL_LIB_DEPENDENCIES} ${QMAKE_LIBS_OPENGL}) ## system png IF(QT_QCONFIG MATCHES "system-png") FIND_LIBRARY(QT_PNG_LIBRARY NAMES png) MARK_AS_ADVANCED(QT_PNG_LIBRARY) IF(QT_PNG_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_PNG_LIBRARY}) ENDIF(QT_PNG_LIBRARY) ENDIF(QT_QCONFIG MATCHES "system-png") # for X11, get X11 library directory IF(Q_WS_X11) QT_QUERY_QMAKE(QMAKE_LIBDIR_X11 "QMAKE_LIBDIR_X11") ENDIF(Q_WS_X11) ## X11 SM IF(QT_QCONFIG MATCHES "x11sm") # ask qmake where the x11 libs are FIND_LIBRARY(QT_X11_SM_LIBRARY NAMES SM PATHS ${QMAKE_LIBDIR_X11}) FIND_LIBRARY(QT_X11_ICE_LIBRARY NAMES ICE PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_X11_SM_LIBRARY) MARK_AS_ADVANCED(QT_X11_ICE_LIBRARY) IF(QT_X11_SM_LIBRARY AND QT_X11_ICE_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_X11_SM_LIBRARY} ${QT_X11_ICE_LIBRARY}) ENDIF(QT_X11_SM_LIBRARY AND QT_X11_ICE_LIBRARY) ENDIF(QT_QCONFIG MATCHES "x11sm") ## Xi IF(QT_QCONFIG MATCHES "tablet") FIND_LIBRARY(QT_XI_LIBRARY NAMES Xi PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XI_LIBRARY) IF(QT_XI_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XI_LIBRARY}) ENDIF(QT_XI_LIBRARY) ENDIF(QT_QCONFIG MATCHES "tablet") ## Xrender IF(QT_QCONFIG MATCHES "xrender") FIND_LIBRARY(QT_XRENDER_LIBRARY NAMES Xrender PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XRENDER_LIBRARY) IF(QT_XRENDER_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XRENDER_LIBRARY}) ENDIF(QT_XRENDER_LIBRARY) ENDIF(QT_QCONFIG MATCHES "xrender") ## Xrandr IF(QT_QCONFIG MATCHES "xrandr") FIND_LIBRARY(QT_XRANDR_LIBRARY NAMES Xrandr PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XRANDR_LIBRARY) IF(QT_XRANDR_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XRANDR_LIBRARY}) ENDIF(QT_XRANDR_LIBRARY) ENDIF(QT_QCONFIG MATCHES "xrandr") ## Xcursor IF(QT_QCONFIG MATCHES "xcursor") FIND_LIBRARY(QT_XCURSOR_LIBRARY NAMES Xcursor PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XCURSOR_LIBRARY) IF(QT_XCURSOR_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XCURSOR_LIBRARY}) ENDIF(QT_XCURSOR_LIBRARY) ENDIF(QT_QCONFIG MATCHES "xcursor") ## Xinerama IF(QT_QCONFIG MATCHES "xinerama") FIND_LIBRARY(QT_XINERAMA_LIBRARY NAMES Xinerama PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XINERAMA_LIBRARY) IF(QT_XINERAMA_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XINERAMA_LIBRARY}) ENDIF(QT_XINERAMA_LIBRARY) ENDIF(QT_QCONFIG MATCHES "xinerama") ## Xfixes IF(QT_QCONFIG MATCHES "xfixes") FIND_LIBRARY(QT_XFIXES_LIBRARY NAMES Xfixes PATHS ${QMAKE_LIBDIR_X11}) MARK_AS_ADVANCED(QT_XFIXES_LIBRARY) IF(QT_XFIXES_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_XFIXES_LIBRARY}) ENDIF(QT_XFIXES_LIBRARY) ENDIF(QT_QCONFIG MATCHES "xfixes") ## system-freetype IF(QT_QCONFIG MATCHES "system-freetype") FIND_LIBRARY(QT_FREETYPE_LIBRARY NAMES freetype) MARK_AS_ADVANCED(QT_FREETYPE_LIBRARY) IF(QT_FREETYPE_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_FREETYPE_LIBRARY}) ENDIF(QT_FREETYPE_LIBRARY) ENDIF(QT_QCONFIG MATCHES "system-freetype") ## fontconfig IF(QT_QCONFIG MATCHES "fontconfig") FIND_LIBRARY(QT_FONTCONFIG_LIBRARY NAMES fontconfig) MARK_AS_ADVANCED(QT_FONTCONFIG_LIBRARY) IF(QT_FONTCONFIG_LIBRARY) SET(QT_QTGUI_LIB_DEPENDENCIES ${QT_QTGUI_LIB_DEPENDENCIES} ${QT_FONTCONFIG_LIBRARY}) ENDIF(QT_FONTCONFIG_LIBRARY) ENDIF(QT_QCONFIG MATCHES "fontconfig") ## system-zlib IF(QT_QCONFIG MATCHES "system-zlib") FIND_LIBRARY(QT_ZLIB_LIBRARY NAMES z) MARK_AS_ADVANCED(QT_ZLIB_LIBRARY) IF(QT_ZLIB_LIBRARY) SET(QT_QTCORE_LIB_DEPENDENCIES ${QT_QTCORE_LIB_DEPENDENCIES} ${QT_ZLIB_LIBRARY}) ENDIF(QT_ZLIB_LIBRARY) ENDIF(QT_QCONFIG MATCHES "system-zlib") ## openssl IF(QT_QCONFIG MATCHES "openssl" AND NOT Q_WS_WIN) FIND_PACKAGE(OpenSSL) IF(OPENSSL_LIBRARIES) SET(QT_QTNETWORK_LIB_DEPENDENCIES ${QT_QTNETWORK_LIB_DEPENDENCIES} ${OPENSSL_LIBRARIES}) ENDIF(OPENSSL_LIBRARIES) ENDIF(QT_QCONFIG MATCHES "openssl" AND NOT Q_WS_WIN) ## qdbus IF(QT_QCONFIG MATCHES "qdbus") # if the dbus library isn't found, we'll assume its not required to build # shared Qt on Linux doesn't require it IF(NOT QT_DBUS_LIBRARY) EXECUTE_PROCESS(COMMAND pkg-config --libs-only-L dbus-1 OUTPUT_VARIABLE _dbus_query_output RESULT_VARIABLE _dbus_result ERROR_VARIABLE _dbus_query_output ) IF(_dbus_result MATCHES 0) STRING(REPLACE "-L" "" _dbus_query_output "${_dbus_query_output}") SEPARATE_ARGUMENTS(_dbus_query_output) ELSE(_dbus_result MATCHES 0) SET(_dbus_query_output) ENDIF(_dbus_result MATCHES 0) FIND_LIBRARY(QT_DBUS_LIBRARY NAMES dbus-1 PATHS ${_dbus_query_output} ) IF(QT_DBUS_LIBRARY) SET(QT_QTDBUS_LIB_DEPENDENCIES ${QT_QTDBUS_LIB_DEPENDENCIES} ${QT_DBUS_LIBRARY}) ENDIF(QT_DBUS_LIBRARY) MARK_AS_ADVANCED(QT_DBUS_LIBRARY) ENDIF(NOT QT_DBUS_LIBRARY) ENDIF(QT_QCONFIG MATCHES "qdbus") ## glib IF(QT_QCONFIG MATCHES "glib") # if the glib libraries aren't found, we'll assume its not required to build # shared Qt on Linux doesn't require it # Qt 4.2.0+ uses glib-2.0 IF(NOT QT_GLIB_LIBRARY OR NOT QT_GTHREAD_LIBRARY) EXECUTE_PROCESS(COMMAND pkg-config --libs-only-L glib-2.0 gthread-2.0 OUTPUT_VARIABLE _glib_query_output RESULT_VARIABLE _glib_result ERROR_VARIABLE _glib_query_output ) IF(_glib_result MATCHES 0) STRING(REPLACE "-L" "" _glib_query_output "${_glib_query_output}") SEPARATE_ARGUMENTS(_glib_query_output) ELSE(_glib_result MATCHES 0) SET(_glib_query_output) ENDIF(_glib_result MATCHES 0) FIND_LIBRARY(QT_GLIB_LIBRARY NAMES glib-2.0 PATHS ${_glib_query_output} ) FIND_LIBRARY(QT_GTHREAD_LIBRARY NAMES gthread-2.0 PATHS ${_glib_query_output} ) IF(QT_GLIB_LIBRARY AND QT_GTHREAD_LIBRARY) SET(QT_QTCORE_LIB_DEPENDENCIES ${QT_QTCORE_LIB_DEPENDENCIES} ${QT_GTHREAD_LIBRARY} ${QT_GLIB_LIBRARY}) ENDIF(QT_GLIB_LIBRARY AND QT_GTHREAD_LIBRARY) MARK_AS_ADVANCED(QT_GLIB_LIBRARY) MARK_AS_ADVANCED(QT_GTHREAD_LIBRARY) ENDIF(NOT QT_GLIB_LIBRARY OR NOT QT_GTHREAD_LIBRARY) ENDIF(QT_QCONFIG MATCHES "glib") ## clock-monotonic, just see if we need to link with rt IF(QT_QCONFIG MATCHES "clock-monotonic") SET(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES}) SET(CMAKE_REQUIRED_LIBRARIES rt) CHECK_SYMBOL_EXISTS(_POSIX_TIMERS "unistd.h;time.h" QT_POSIX_TIMERS) SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_SAVE}) IF(QT_POSIX_TIMERS) FIND_LIBRARY(QT_RT_LIBRARY NAMES rt) MARK_AS_ADVANCED(QT_RT_LIBRARY) IF(QT_RT_LIBRARY) SET(QT_QTCORE_LIB_DEPENDENCIES ${QT_QTCORE_LIB_DEPENDENCIES} ${QT_RT_LIBRARY}) ENDIF(QT_RT_LIBRARY) ENDIF(QT_POSIX_TIMERS) ENDIF(QT_QCONFIG MATCHES "clock-monotonic") IF(Q_WS_X11) # X11 libraries Qt absolutely depends on QT_QUERY_QMAKE(QT_LIBS_X11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -