2016-11-08 19:57:57 +01:00
|
|
|
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
|
|
|
|
2019-05-04 20:59:19 +02:00
|
|
|
# applies Qt specific configuration notes: For GUI applications, QtGuiConfig must be included before. This module must always
|
|
|
|
# be included before AppTarget/LibraryTarget.
|
2018-03-07 18:21:47 +01:00
|
|
|
|
|
|
|
# ensure generated sources are processed by AUTOMOC and AUTOUIC
|
2019-02-06 17:32:10 +01:00
|
|
|
if (POLICY CMP0071)
|
2018-03-13 19:57:44 +01:00
|
|
|
cmake_policy(SET CMP0071 NEW)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2017-02-11 02:31:43 +01:00
|
|
|
|
2019-04-22 22:27:00 +02:00
|
|
|
# verify inclusion order
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT BASIC_PROJECT_CONFIG_DONE)
|
2017-02-11 02:31:43 +01:00
|
|
|
message(FATAL_ERROR "Before including the QtConfig module, the BasicConfig module must be included.")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (QT_CONFIGURED)
|
2017-02-11 02:31:43 +01:00
|
|
|
message(FATAL_ERROR "The QtConfig module can not be included when Qt usage has already been configured.")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (TARGET_CONFIG_DONE)
|
2017-02-11 02:31:43 +01:00
|
|
|
message(FATAL_ERROR "Can not include QtConfig module when targets are already configured.")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2019-04-22 22:27:00 +02:00
|
|
|
# include required modules
|
|
|
|
include(ListToString)
|
|
|
|
include(TemplateFinder)
|
|
|
|
include(QtLinkage)
|
|
|
|
|
2019-05-04 20:59:19 +02:00
|
|
|
# add the Core module as it is always required and also add additional Qt/KF modules which must have been specified before if
|
|
|
|
# required note: The Gui/Widgets/Quick modules should be added by including QtGuiConfig.
|
2019-04-04 19:13:30 +02:00
|
|
|
set(QT_REPOS ${ADDITIONAL_QT_REPOS} base)
|
2017-08-06 00:41:50 +02:00
|
|
|
set(QT_MODULES ${ADDITIONAL_QT_MODULES} Core)
|
2016-04-16 00:50:31 +02:00
|
|
|
set(KF_MODULES ${ADDITIONAL_KF_MODULES})
|
2016-10-08 19:07:28 +02:00
|
|
|
|
2019-05-04 22:16:46 +02:00
|
|
|
# disable deprecated features
|
2019-06-25 14:16:40 +02:00
|
|
|
option(DISABLE_DEPRECATED_QT_FEATURES "specifies whether deprecated Qt features should be disabled" OFF)
|
|
|
|
if (DISABLE_DEPRECATED_QT_FEATURES)
|
|
|
|
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000)
|
|
|
|
endif ()
|
2019-05-04 22:16:46 +02:00
|
|
|
|
2017-02-20 20:03:57 +01:00
|
|
|
# allow specifying a custom directory for Qt plugins
|
2019-11-30 17:58:56 +01:00
|
|
|
set(QT_PLUGIN_DIR
|
|
|
|
""
|
|
|
|
CACHE STRING "specifies the directory to install Qt plugins")
|
2017-02-20 20:03:57 +01:00
|
|
|
|
2016-07-27 18:51:25 +02:00
|
|
|
# check whether D-Bus interfaces need to be processed
|
2019-02-06 17:32:10 +01:00
|
|
|
if (DBUS_FILES)
|
2016-07-27 18:51:25 +02:00
|
|
|
message(STATUS "Project has D-Bus interface declarations which will be processed.")
|
|
|
|
# the D-Bus Qt module is required
|
|
|
|
list(APPEND QT_MODULES DBus)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-07-27 18:51:25 +02:00
|
|
|
|
2016-11-08 19:57:57 +01:00
|
|
|
# remove duplicates
|
2016-10-08 19:07:28 +02:00
|
|
|
list(REMOVE_DUPLICATES QT_REPOS)
|
|
|
|
list(REMOVE_DUPLICATES QT_MODULES)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (IMPORTED_QT_MODULES)
|
2016-11-08 19:57:57 +01:00
|
|
|
list(REMOVE_DUPLICATES IMPORTED_QT_MODULES)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (KF_MODULES)
|
2016-10-08 19:07:28 +02:00
|
|
|
list(REMOVE_DUPLICATES KF_MODULES)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (IMPORTED_KF_MODULES)
|
2016-11-08 19:57:57 +01:00
|
|
|
list(REMOVE_DUPLICATES IMPORTED_KF_MODULES)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-10-08 19:07:28 +02:00
|
|
|
|
2019-04-04 19:13:30 +02:00
|
|
|
# find and use the required Qt/KF modules
|
2019-11-30 17:58:56 +01:00
|
|
|
set(QT_PACKAGE_PREFIX
|
|
|
|
"Qt5"
|
|
|
|
CACHE STRING "specifies the prefix for Qt packages")
|
2020-04-27 23:47:08 +02:00
|
|
|
set(QT_LINGUIST_TOOLS_PACKAGE "${QT_PACKAGE_PREFIX}LinguistTools")
|
|
|
|
set(QT_QMAKE_TARGET "${QT_PACKAGE_PREFIX}::qmake")
|
2019-04-04 19:13:30 +02:00
|
|
|
foreach (MODULE ${QT_MODULES})
|
|
|
|
unset(MODULE_OPTIONS)
|
|
|
|
if ("${MODULE}" IN_LIST META_PUBLIC_QT_MODULES)
|
|
|
|
list(APPEND MODULE_OPTIONS VISIBILITY PUBLIC)
|
2019-05-04 20:59:19 +02:00
|
|
|
endif ()
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(PREFIX "${QT_PACKAGE_PREFIX}" MODULE "${MODULE}" ${MODULE_OPTIONS})
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
2019-11-30 17:58:56 +01:00
|
|
|
set(KF_PACKAGE_PREFIX
|
|
|
|
"KF5"
|
|
|
|
CACHE STRING "specifies the prefix for KDE Frameworks packages")
|
2019-04-04 19:13:30 +02:00
|
|
|
foreach (MODULE ${KF_MODULES})
|
|
|
|
unset(MODULE_OPTIONS)
|
|
|
|
if ("${MODULE}" IN_LIST META_PUBLIC_KF_MODULES)
|
|
|
|
list(APPEND MODULE_OPTIONS VISIBILITY PUBLIC)
|
2019-05-04 20:59:19 +02:00
|
|
|
endif ()
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(PREFIX "${KF_PACKAGE_PREFIX}" MODULE "${MODULE}" ${MODULE_OPTIONS})
|
2019-04-04 19:13:30 +02:00
|
|
|
endforeach ()
|
|
|
|
|
2020-04-27 23:47:08 +02:00
|
|
|
# hacks for using static Qt 5 via "StaticQt5" prefix: find regular Qt5Core module as well so Qt version is defined and use
|
|
|
|
# regular Qt5LinguistTools module and regular qmake target
|
2019-04-04 19:13:30 +02:00
|
|
|
if (QT_PACKAGE_PREFIX STREQUAL "StaticQt5")
|
|
|
|
find_package(Qt5Core)
|
2020-04-27 23:47:08 +02:00
|
|
|
set(QT_LINGUIST_TOOLS_PACKAGE Qt5LinguistTools)
|
|
|
|
set(QT_QMAKE_TARGET Qt5::qmake)
|
2019-05-04 20:59:19 +02:00
|
|
|
endif ()
|
2019-04-04 19:13:30 +02:00
|
|
|
|
|
|
|
# find transitively required Qt/KF modules
|
|
|
|
foreach (MODULE ${IMPORTED_QT_MODULES})
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT "${QT_MODULE}" IN_LIST QT_MODULES)
|
2019-04-04 19:13:30 +02:00
|
|
|
find_package("${QT_PACKAGE_PREFIX}${MODULE}" REQUIRED)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2019-04-04 19:13:30 +02:00
|
|
|
foreach (MODULE ${IMPORTED_KF_MODULES})
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT "${KF_MODULE}" IN_LIST KF_MODULES)
|
2019-04-04 19:13:30 +02:00
|
|
|
find_package("${KF_PACKAGE_PREFIX}${MODULE}" REQUIRED)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2016-07-27 18:51:25 +02:00
|
|
|
|
2019-04-04 19:13:30 +02:00
|
|
|
# built-in platform, imageformat and iconengine plugins when linking statically against Qt
|
|
|
|
if (STATIC_LINKAGE AND META_PROJECT_IS_APPLICATION)
|
2020-04-27 23:47:08 +02:00
|
|
|
message(STATUS "Linking application ${META_PROJECT_NAME} against Qt plugins because static linkage is enabled.")
|
2019-04-04 19:13:30 +02:00
|
|
|
|
2019-11-30 17:58:56 +01:00
|
|
|
if (Gui IN_LIST QT_MODULES
|
|
|
|
OR Widgets IN_LIST QT_MODULES
|
|
|
|
OR Quick IN_LIST QT_MODULES)
|
2019-04-04 19:13:30 +02:00
|
|
|
if (WIN32)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Gui
|
|
|
|
PLUGINS
|
|
|
|
WindowsIntegration
|
|
|
|
ONLY_PLUGINS)
|
2019-04-04 19:13:30 +02:00
|
|
|
elseif (APPLE)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Gui
|
|
|
|
PLUGINS
|
|
|
|
CocoaIntegration
|
|
|
|
ONLY_PLUGINS)
|
2019-04-04 19:13:30 +02:00
|
|
|
elseif (TARGET ${QT5_Gui_STATIC_PREFIX}QXcbIntegrationPlugin)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Gui
|
|
|
|
PLUGINS
|
|
|
|
XcbIntegration
|
|
|
|
ONLY_PLUGINS)
|
2019-04-04 19:13:30 +02:00
|
|
|
else ()
|
|
|
|
message(WARNING "The required platform plugin for your platform is unknown an can not be linked in statically.")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2019-05-04 20:59:19 +02:00
|
|
|
endif ()
|
2017-09-03 18:03:41 +02:00
|
|
|
|
2019-02-06 17:32:10 +01:00
|
|
|
# ensure all available widget style plugins are built-in when creating a Qt Widgets application note: required since Qt
|
|
|
|
# 5.10 because the styles have been "pluginized" (see commit 4f3249f)
|
2017-12-15 20:22:29 +01:00
|
|
|
set(KNOWN_WIDGET_STYLE_PLUGINS WindowsVistaStyle MacStyle AndroidStyle)
|
|
|
|
set(USED_WIDGET_STYLE_PLUGINS)
|
2019-04-04 19:13:30 +02:00
|
|
|
if (Widgets IN_LIST QT_MODULES)
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (WIDGET_STYLE_PLUGIN ${KNOWN_WIDGET_STYLE_PLUGINS})
|
2019-04-04 19:13:30 +02:00
|
|
|
if (TARGET "${QT_PACKAGE_PREFIX}::Q${WIDGET_STYLE_PLUGIN}Plugin")
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Widgets
|
|
|
|
PLUGINS
|
|
|
|
${WIDGET_STYLE_PLUGIN}
|
|
|
|
ONLY_PLUGINS)
|
2017-12-15 20:22:29 +01:00
|
|
|
list(APPEND USED_WIDGET_STYLE_PLUGINS "${WIDGET_STYLE_PLUGIN}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2017-12-15 20:22:29 +01:00
|
|
|
|
2020-03-17 19:56:32 +01:00
|
|
|
# allow importing image format plugins via qtconfig.h
|
2019-04-04 19:13:30 +02:00
|
|
|
if (USED_WIDGET_STYLE_PLUGINS)
|
2019-11-30 17:58:56 +01:00
|
|
|
list_to_string(" " "\\\n Q_IMPORT_PLUGIN(Q" "Plugin)" "${USED_WIDGET_STYLE_PLUGINS}"
|
2019-05-04 20:59:19 +02:00
|
|
|
WIDGET_STYLE_PLUGINS_ARRAY)
|
2019-04-04 19:13:30 +02:00
|
|
|
endif ()
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2017-12-15 20:22:29 +01:00
|
|
|
|
2017-09-03 18:03:41 +02:00
|
|
|
# ensure image format plugins (beside SVG) are built-in if configured
|
2019-02-06 17:32:10 +01:00
|
|
|
if (IMAGE_FORMAT_SUPPORT)
|
|
|
|
foreach (IMAGE_FORMAT ${IMAGE_FORMAT_SUPPORT})
|
|
|
|
if (IMAGE_FORMAT EQUAL "Svg")
|
2017-09-03 18:03:41 +02:00
|
|
|
# the image format plugin of the Qt Svg module is handled separately
|
|
|
|
set(SVG_SUPPORT ON)
|
|
|
|
list(REMOVE_ITEM IMAGE_FORMAT_SUPPORT Svg)
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Gui
|
|
|
|
PLUGINS
|
|
|
|
${IMAGE_FORMAT}
|
|
|
|
ONLY_PLUGINS)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2017-09-03 18:03:41 +02:00
|
|
|
|
2020-03-17 19:56:32 +01:00
|
|
|
# allow importing image format plugins via qtconfig.h
|
2019-11-30 17:58:56 +01:00
|
|
|
list_to_string(" " "\\\n Q_IMPORT_PLUGIN(Q" "Plugin)" "${IMAGE_FORMAT_SUPPORT}" IMAGE_FORMAT_SUPPORT_ARRAY)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2017-09-03 18:03:41 +02:00
|
|
|
|
2017-08-20 02:23:02 +02:00
|
|
|
# ensure SVG plugins are built-in if configured
|
2019-06-01 12:15:48 +02:00
|
|
|
if ((SVG_SUPPORT OR SVG_ICON_SUPPORT) AND NOT Svg IN_LIST QT_MODULES)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(PREFIX "${QT_PACKAGE_PREFIX}" MODULE Svg)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (SVG_SUPPORT)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Svg
|
|
|
|
PLUGINS
|
|
|
|
Svg
|
|
|
|
ONLY_PLUGINS)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
if (SVG_ICON_SUPPORT)
|
2019-11-30 17:58:56 +01:00
|
|
|
use_qt_module(
|
|
|
|
PREFIX
|
|
|
|
"${QT_PACKAGE_PREFIX}"
|
|
|
|
MODULE
|
|
|
|
Svg
|
|
|
|
PLUGINS
|
|
|
|
SvgIcon
|
|
|
|
ONLY_PLUGINS)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endif ()
|
2016-08-19 16:16:10 +02:00
|
|
|
|
2016-07-27 21:42:27 +02:00
|
|
|
# option for built-in translations
|
2017-02-11 02:56:19 +01:00
|
|
|
option(BUILTIN_TRANSLATIONS "enables/disables built-in translations when building applications and libraries" OFF)
|
2016-07-27 21:42:27 +02:00
|
|
|
|
|
|
|
# determine relevant Qt translation files
|
|
|
|
set(QT_TRANSLATION_FILES)
|
|
|
|
set(QT_TRANSLATION_SEARCH_PATHS)
|
2019-04-04 19:13:30 +02:00
|
|
|
query_qmake_variable(QT_INSTALL_TRANSLATIONS)
|
|
|
|
if (QT_INSTALL_TRANSLATIONS)
|
|
|
|
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${QT_INSTALL_TRANSLATIONS}")
|
|
|
|
endif ()
|
2019-02-06 17:32:10 +01:00
|
|
|
if (CMAKE_FIND_ROOT_PATH)
|
2020-02-13 11:43:29 +01:00
|
|
|
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${CMAKE_FIND_ROOT_PATH}/${CMAKE_INSTALL_DATAROOTDIR}/qt/translations"
|
2020-03-08 13:51:36 +01:00
|
|
|
"${CMAKE_FIND_ROOT_PATH}/${CMAKE_INSTALL_DATAROOTDIR}/qt5/translations")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2020-02-13 11:43:29 +01:00
|
|
|
list(APPEND QT_TRANSLATION_SEARCH_PATHS "${CMAKE_INSTALL_FULL_DATAROOTDIR}/qt/translations"
|
2020-03-08 13:51:36 +01:00
|
|
|
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/qt5/translations" "/usr/${CMAKE_INSTALL_DATAROOTDIR}/qt/translations"
|
|
|
|
"/usr/${CMAKE_INSTALL_DATAROOTDIR}/qt5/translations")
|
2019-08-10 00:12:05 +02:00
|
|
|
list(REMOVE_DUPLICATES QT_TRANSLATION_SEARCH_PATHS)
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (QT_TRANSLATION_PATH ${QT_TRANSLATION_SEARCH_PATHS})
|
2019-08-10 00:12:05 +02:00
|
|
|
if (NOT IS_DIRECTORY "${QT_TRANSLATION_PATH}")
|
|
|
|
continue()
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2019-08-10 00:12:05 +02:00
|
|
|
foreach (QT_REPO ${QT_REPOS})
|
|
|
|
file(GLOB QT_QM_FILES "${QT_TRANSLATION_PATH}/qt${QT_REPO}_*.qm")
|
|
|
|
if (NOT QT_QM_FILES)
|
|
|
|
continue()
|
|
|
|
endif ()
|
|
|
|
# add files to list of built-in translations but only if that configuration is enabled and if we're building the
|
|
|
|
# final application
|
|
|
|
if (BUILTIN_TRANSLATIONS AND "${META_PROJECT_TYPE}" STREQUAL "application")
|
|
|
|
file(COPY ${QT_QM_FILES} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
list(APPEND EXTERNAL_QM_FILES ${QT_QM_FILES})
|
|
|
|
endif ()
|
|
|
|
list(APPEND QT_TRANSLATION_FILES "qt${QT_REPO}")
|
|
|
|
endforeach ()
|
|
|
|
break()
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
2016-07-27 21:42:27 +02:00
|
|
|
|
2019-08-10 00:12:05 +02:00
|
|
|
# emit warning if no Qt translations found but built-in translations are enabled
|
|
|
|
if (BUILTIN_TRANSLATIONS AND NOT QT_TRANSLATION_FILES)
|
|
|
|
message(
|
|
|
|
WARNING
|
|
|
|
"Unable to find translations of Qt itself so Qt's translation files will not be built-in. Be sure Qt translations (https://code.qt.io/cgit/qt/qttranslations.git) are installed. Was looking under: ${QT_TRANSLATION_SEARCH_PATHS}"
|
2019-11-30 17:58:56 +01:00
|
|
|
)
|
2019-08-10 00:12:05 +02:00
|
|
|
endif ()
|
|
|
|
|
2020-03-17 19:56:32 +01:00
|
|
|
# make relevant Qt translations available as array via qtconfig.h
|
2019-08-10 00:12:05 +02:00
|
|
|
if (QT_TRANSLATION_FILES)
|
2019-11-30 17:58:56 +01:00
|
|
|
list_to_string("," " \\\n QStringLiteral(\"" "\")" "${QT_TRANSLATION_FILES}" QT_TRANSLATION_FILES_ARRAY)
|
2019-08-10 00:12:05 +02:00
|
|
|
endif ()
|
2016-07-27 21:42:27 +02:00
|
|
|
|
2016-04-16 00:50:31 +02:00
|
|
|
# enable lrelease and add install target for localization
|
2017-08-06 00:40:11 +02:00
|
|
|
option(ENABLE_QT_TRANSLATIONS "specifies whether Qt translations should be updated/released" ON)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (ENABLE_QT_TRANSLATIONS AND TS_FILES)
|
2016-04-16 00:50:31 +02:00
|
|
|
message(STATUS "Project has translations which will be released.")
|
2017-01-07 16:09:38 +01:00
|
|
|
set(APP_SPECIFIC_QT_TRANSLATIONS_AVAILABLE YES)
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2019-02-06 17:32:10 +01:00
|
|
|
# the LinguistTools module is required (but not add it to QT_MODULES because we don't link against it)
|
2020-04-27 23:47:08 +02:00
|
|
|
find_package("${QT_LINGUIST_TOOLS_PACKAGE}" REQUIRED)
|
|
|
|
|
|
|
|
if (NOT COMMAND qt_create_translation)
|
|
|
|
macro (qt_create_translation)
|
|
|
|
qt5_create_translation(${ARGV})
|
|
|
|
endmacro ()
|
|
|
|
endif ()
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2019-11-30 17:58:56 +01:00
|
|
|
set(LUPDATE_OPTIONS
|
|
|
|
""
|
|
|
|
CACHE STRING "specifies options passed to lupdate")
|
2017-08-01 10:47:27 +02:00
|
|
|
|
2016-04-16 00:50:31 +02:00
|
|
|
# adds the translations and a target for it
|
2020-04-27 23:47:08 +02:00
|
|
|
qt_create_translation(
|
2019-11-30 17:58:56 +01:00
|
|
|
QM_FILES
|
|
|
|
${HEADER_FILES}
|
|
|
|
${SRC_FILES}
|
|
|
|
${WIDGETS_HEADER_FILES}
|
|
|
|
${WIDGETS_SRC_FILES}
|
|
|
|
${WIDGETS_UI_FILES}
|
|
|
|
${QML_HEADER_FILES}
|
|
|
|
${QML_SRC_FILES}
|
|
|
|
${QML_RES_FILES}
|
|
|
|
${EXCLUDED_FILES}
|
|
|
|
${TS_FILES}
|
|
|
|
OPTIONS
|
|
|
|
${LUPDATE_OPTIONS})
|
2017-10-16 09:56:35 +02:00
|
|
|
add_custom_target(${META_PROJECT_NAME}_translations DEPENDS ${QM_FILES})
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT TARGET translations)
|
2017-10-16 09:56:35 +02:00
|
|
|
add_custom_target(translations DEPENDS ${META_PROJECT_NAME}_translations)
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
2017-10-16 09:56:35 +02:00
|
|
|
add_dependencies(translations ${META_PROJECT_NAME}_translations)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2017-07-20 01:43:48 +02:00
|
|
|
# add install target for translations
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
|
2019-11-30 17:58:56 +01:00
|
|
|
install(
|
|
|
|
FILES ${QM_FILES}
|
|
|
|
DESTINATION "${META_DATA_DIR}/translations"
|
|
|
|
COMPONENT localization)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT TARGET install-localization)
|
2017-07-20 01:43:48 +02:00
|
|
|
set(LOCALIZATION_TARGET "install-localization")
|
2019-11-30 17:58:56 +01:00
|
|
|
add_custom_target(${LOCALIZATION_TARGET} COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=localization -P
|
|
|
|
"${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
2017-07-20 01:43:48 +02:00
|
|
|
add_dependencies(${LOCALIZATION_TARGET} ${META_PROJECT_NAME}_translations)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endif ()
|
2016-07-16 23:12:02 +02:00
|
|
|
|
2019-08-07 22:57:17 +02:00
|
|
|
list(APPEND APP_SPECIFIC_QT_TRANSLATION_FILES "${META_PROJECT_NAME}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
|
2020-03-17 19:56:32 +01:00
|
|
|
# make application specific translation available as array via qtconfig.h (even if this project has no translations, there
|
2019-02-06 17:32:10 +01:00
|
|
|
# might be some from dependencies)
|
|
|
|
if (APP_SPECIFIC_QT_TRANSLATION_FILES)
|
2019-11-30 17:58:56 +01:00
|
|
|
list_to_string("," " \\\n QStringLiteral(\"" "\")" "${APP_SPECIFIC_QT_TRANSLATION_FILES}"
|
2019-02-06 17:32:10 +01:00
|
|
|
APP_SPECIFIC_QT_TRANSLATION_FILES_ARRAY)
|
|
|
|
else ()
|
2017-01-07 16:09:38 +01:00
|
|
|
set(APP_SPECIFIC_QT_TRANSLATIONS_AVAILABLE NO)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2017-02-26 18:42:08 +01:00
|
|
|
# built-in translations
|
2019-02-06 17:32:10 +01:00
|
|
|
if (BUILTIN_TRANSLATIONS AND (QM_FILES OR EXTERNAL_QM_FILES))
|
2017-02-26 18:42:08 +01:00
|
|
|
# write a qrc file for the qm files and add it to the resource files
|
|
|
|
set(TRANSLATIONS_QRC_FILE_NAME "${META_PROJECT_VARNAME_LOWER}_translations.qrc")
|
|
|
|
set(TRANSLATIONS_QRC_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TRANSLATIONS_QRC_FILE_NAME}")
|
|
|
|
file(WRITE "${TRANSLATIONS_QRC_FILE}" "<RCC><qresource prefix=\"/translations\">")
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (QM_FILE ${QM_FILES} ${EXTERNAL_QM_FILES})
|
2017-02-26 18:42:08 +01:00
|
|
|
get_filename_component(QM_FILE_NAME "${QM_FILE}" NAME)
|
|
|
|
file(APPEND "${TRANSLATIONS_QRC_FILE}" "<file>${QM_FILE_NAME}</file>")
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
2017-02-26 18:42:08 +01:00
|
|
|
file(APPEND "${TRANSLATIONS_QRC_FILE}" "</qresource></RCC>")
|
|
|
|
list(APPEND RES_FILES "${TRANSLATIONS_QRC_FILE}")
|
2018-01-20 22:33:45 +01:00
|
|
|
list(APPEND AUTOGEN_DEPS ${QM_FILES} ${EXTERNAL_QM_FILES})
|
2017-02-26 18:42:08 +01:00
|
|
|
list(APPEND BUILTIN_TRANSLATION_FILES "${TRANSLATIONS_QRC_FILE_NAME}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2017-02-26 18:42:08 +01:00
|
|
|
|
2016-04-16 00:50:31 +02:00
|
|
|
# generate DBus interfaces
|
2019-02-06 17:32:10 +01:00
|
|
|
if (DBUS_FILES)
|
2020-04-27 23:47:08 +02:00
|
|
|
if (NOT COMMAND qt_add_dbus_interfaces)
|
|
|
|
macro (qt_add_dbus_interfaces)
|
|
|
|
qt5_add_dbus_interfaces(${ARGV})
|
|
|
|
endmacro ()
|
|
|
|
endif ()
|
|
|
|
qt_add_dbus_interfaces(GENERATED_DBUS_FILES ${DBUS_FILES})
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-04-16 00:50:31 +02:00
|
|
|
|
2016-07-16 23:12:02 +02:00
|
|
|
# add icons to be built-in
|
2019-02-06 17:32:10 +01:00
|
|
|
if (REQUIRED_ICONS)
|
2019-11-30 17:58:56 +01:00
|
|
|
set(BUILTIN_ICON_THEMES
|
|
|
|
""
|
|
|
|
CACHE STRING "specifies icon themes to be built-in")
|
2019-02-06 17:32:10 +01:00
|
|
|
option(BUILTIN_ICON_THEMES_IN_LIBRARIES "specifies whether icon themes should also be built-in when building libraries"
|
|
|
|
OFF)
|
|
|
|
if (BUILTIN_ICON_THEMES AND (BUILTIN_ICON_THEMES_IN_LIBRARIES OR (NOT "${META_PROJECT_TYPE}" STREQUAL "library")))
|
2016-07-16 23:12:02 +02:00
|
|
|
set(ICON_THEME_FILES)
|
|
|
|
set(ICON_SEARCH_PATHS)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (CMAKE_FIND_ROOT_PATH)
|
2020-02-13 11:43:29 +01:00
|
|
|
list(APPEND ICON_SEARCH_PATHS "${CMAKE_FIND_ROOT_PATH}/${CMAKE_INSTALL_DATAROOTDIR}/icons")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2020-02-13 11:43:29 +01:00
|
|
|
list(APPEND ICON_SEARCH_PATHS "${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons")
|
2020-03-08 13:51:36 +01:00
|
|
|
list(APPEND ICON_SEARCH_PATHS "/usr/${CMAKE_INSTALL_DATAROOTDIR}/icons") # find icons from regular prefix when cross-
|
|
|
|
# compiling
|
2020-02-13 11:43:29 +01:00
|
|
|
list(REMOVE_DUPLICATES ICON_SEARCH_PATHS)
|
2017-02-11 02:56:28 +01:00
|
|
|
set(BUILTIN_ICONS_DIR "${CMAKE_CURRENT_BINARY_DIR}/icons")
|
|
|
|
set(DEFAULT_THEME_INDEX_FILE "${BUILTIN_ICONS_DIR}/default/index.theme")
|
|
|
|
file(REMOVE_RECURSE "${BUILTIN_ICONS_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${BUILTIN_ICONS_DIR}")
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (ICON_THEME ${BUILTIN_ICON_THEMES})
|
2019-11-30 17:58:56 +01:00
|
|
|
string(REGEX MATCHALL "([^:]+|[^:]+$)" ICON_THEME_PARTS "${ICON_THEME}")
|
2016-08-27 15:00:55 +02:00
|
|
|
list(LENGTH ICON_THEME_PARTS ICON_THEME_PARTS_LENGTH)
|
2019-02-06 17:32:10 +01:00
|
|
|
if ("${ICON_THEME_PARTS_LENGTH}" STREQUAL 2)
|
2016-08-27 15:00:55 +02:00
|
|
|
list(GET ICON_THEME_PARTS 0 ICON_THEME)
|
|
|
|
list(GET ICON_THEME_PARTS 1 NEW_ICON_THEME_NAME)
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
2016-08-27 15:00:55 +02:00
|
|
|
set(NEW_ICON_THEME_NAME "${ICON_THEME}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
foreach (ICON_SEARCH_PATH ${ICON_SEARCH_PATHS})
|
2016-07-16 23:12:02 +02:00
|
|
|
set(ICON_THEME_PATH "${ICON_SEARCH_PATH}/${ICON_THEME}")
|
2016-08-27 15:00:55 +02:00
|
|
|
set(NEW_ICON_THEME_PATH "${ICON_SEARCH_PATH}/${ICON_THEME}")
|
2019-02-06 17:32:10 +01:00
|
|
|
if (IS_DIRECTORY "${ICON_THEME_PATH}")
|
|
|
|
message(
|
|
|
|
STATUS
|
|
|
|
"The specified icon theme \"${ICON_THEME}\" has been located under \"${ICON_THEME_PATH}\" and will be built-in."
|
2019-11-30 17:58:56 +01:00
|
|
|
)
|
2016-08-27 15:00:55 +02:00
|
|
|
# find index files
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT ICON_THEME STREQUAL FALLBACK_ICON_THEME)
|
2019-11-30 17:58:56 +01:00
|
|
|
file(
|
|
|
|
GLOB GLOBBED_ICON_THEME_INDEX_FILES
|
|
|
|
LIST_DIRECTORIES false
|
|
|
|
"${ICON_THEME_PATH}/index.theme" "${ICON_THEME_PATH}/icon-theme.cache")
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
2016-11-01 14:05:48 +01:00
|
|
|
# only index.theme required when icons are provided as fallback anyways
|
2019-11-30 17:58:56 +01:00
|
|
|
file(
|
|
|
|
GLOB GLOBBED_ICON_THEME_INDEX_FILES
|
|
|
|
LIST_DIRECTORIES false
|
|
|
|
"${ICON_THEME_PATH}/index.theme")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-08-27 15:00:55 +02:00
|
|
|
# make the first specified built-in the default theme
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT EXISTS "${DEFAULT_THEME_INDEX_FILE}")
|
2017-02-11 02:56:28 +01:00
|
|
|
file(MAKE_DIRECTORY "${BUILTIN_ICONS_DIR}/default")
|
2016-08-27 15:00:55 +02:00
|
|
|
file(WRITE "${DEFAULT_THEME_INDEX_FILE}" "[Icon Theme]\nInherits=${NEW_ICON_THEME_NAME}")
|
2016-07-16 23:12:02 +02:00
|
|
|
list(APPEND ICON_THEME_FILES "<file>default/index.theme</file>")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-11-01 14:05:48 +01:00
|
|
|
# find required icons, except the icon theme is provided as fallback anyways
|
2019-02-06 17:32:10 +01:00
|
|
|
if (NOT ICON_THEME STREQUAL FALLBACK_ICON_THEME)
|
2016-11-01 14:05:48 +01:00
|
|
|
set(GLOB_PATTERNS)
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (REQUIRED_ICON ${REQUIRED_ICONS})
|
2019-11-30 17:58:56 +01:00
|
|
|
list(APPEND GLOB_PATTERNS "${ICON_THEME_PATH}/${REQUIRED_ICON}"
|
2020-03-08 13:51:36 +01:00
|
|
|
"${ICON_THEME_PATH}/${REQUIRED_ICON}.*" "${ICON_THEME_PATH}/*/${REQUIRED_ICON}"
|
|
|
|
"${ICON_THEME_PATH}/*/${REQUIRED_ICON}.*")
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
2019-11-30 17:58:56 +01:00
|
|
|
file(
|
|
|
|
GLOB_RECURSE GLOBBED_ICON_THEME_FILES
|
|
|
|
LIST_DIRECTORIES false
|
|
|
|
${GLOB_PATTERNS})
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
|
|
|
message(
|
|
|
|
STATUS
|
|
|
|
"Icon files for specified theme \"${ICON_THEME}\" are skipped because these are provided as fallback anyways."
|
2019-11-30 17:58:56 +01:00
|
|
|
)
|
2016-11-01 14:05:48 +01:00
|
|
|
set(GLOBBED_ICON_THEME_FILES)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-08-27 15:00:55 +02:00
|
|
|
# make temporary copy of required icons and create resource list for Qt
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (ICON_THEME_FILE ${GLOBBED_ICON_THEME_INDEX_FILES} ${GLOBBED_ICON_THEME_FILES})
|
2017-02-11 02:04:12 +01:00
|
|
|
# resolve symlinks
|
2019-02-06 17:32:10 +01:00
|
|
|
if (IS_SYMLINK "${ICON_THEME_FILE}")
|
2019-11-30 17:58:56 +01:00
|
|
|
string(REGEX REPLACE "^${ICON_SEARCH_PATH}/" "" ICON_THEME_FILE_RELATIVE_PATH
|
|
|
|
"${ICON_THEME_FILE}")
|
|
|
|
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_RELATIVE_PATH
|
|
|
|
"${ICON_THEME_FILE_RELATIVE_PATH}")
|
2016-08-27 15:00:55 +02:00
|
|
|
set(ICON_THEME_FILE_ALIAS " alias=\"${NEW_ICON_THEME_FILE_RELATIVE_PATH}\"")
|
2016-07-16 23:12:02 +02:00
|
|
|
get_filename_component(ICON_THEME_FILE "${ICON_THEME_FILE}" REALPATH)
|
2019-02-06 17:32:10 +01:00
|
|
|
else ()
|
2016-07-27 21:42:27 +02:00
|
|
|
unset(ICON_THEME_FILE_ALIAS)
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2019-11-30 17:58:56 +01:00
|
|
|
string(REGEX REPLACE "^${ICON_SEARCH_PATH}/" "" ICON_THEME_FILE_RELATIVE_PATH "${ICON_THEME_FILE}")
|
|
|
|
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_RELATIVE_PATH
|
|
|
|
"${ICON_THEME_FILE_RELATIVE_PATH}")
|
2016-07-16 23:12:02 +02:00
|
|
|
get_filename_component(ICON_THEME_FILE_DIR "${ICON_THEME_FILE_RELATIVE_PATH}" DIRECTORY)
|
2019-11-30 17:58:56 +01:00
|
|
|
string(REGEX REPLACE "(^[^/\\]+)" "${NEW_ICON_THEME_NAME}" NEW_ICON_THEME_FILE_DIR
|
|
|
|
"${ICON_THEME_FILE_DIR}")
|
2017-02-11 02:56:28 +01:00
|
|
|
file(MAKE_DIRECTORY "${BUILTIN_ICONS_DIR}/${NEW_ICON_THEME_FILE_DIR}")
|
|
|
|
file(COPY "${ICON_THEME_FILE}" DESTINATION "${BUILTIN_ICONS_DIR}/${NEW_ICON_THEME_FILE_DIR}")
|
2019-02-06 17:32:10 +01:00
|
|
|
list(APPEND ICON_THEME_FILES
|
2020-03-08 13:51:36 +01:00
|
|
|
"<file${ICON_THEME_FILE_ALIAS}>${NEW_ICON_THEME_FILE_RELATIVE_PATH}</file>")
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
2016-07-16 23:12:02 +02:00
|
|
|
break()
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2016-08-27 15:00:55 +02:00
|
|
|
unset(ICON_THEME_PATH)
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
|
|
|
if (NOT ICON_THEME_PATH)
|
2016-08-27 15:00:55 +02:00
|
|
|
message(FATAL_ERROR "The specified icon theme \"${ICON_THEME}\" coud not be found.")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2017-02-09 23:34:13 +01:00
|
|
|
set(BUILTIN_ICON_THEMES_QRC_FILE "${CMAKE_CURRENT_BINARY_DIR}/icons/${META_PROJECT_NAME}_builtinicons.qrc")
|
2016-07-27 18:51:25 +02:00
|
|
|
list(REMOVE_DUPLICATES ICON_THEME_FILES)
|
2019-11-30 17:58:56 +01:00
|
|
|
string(CONCAT BUILTIN_ICON_THEMES_QRC_FILE_CONTENT "<RCC><qresource prefix=\"/icons\">" ${ICON_THEME_FILES}
|
2019-02-06 17:32:10 +01:00
|
|
|
"</qresource></RCC>")
|
2016-07-16 23:12:02 +02:00
|
|
|
file(WRITE "${BUILTIN_ICON_THEMES_QRC_FILE}" "${BUILTIN_ICON_THEMES_QRC_FILE_CONTENT}")
|
|
|
|
list(APPEND RES_FILES "${BUILTIN_ICON_THEMES_QRC_FILE}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endif ()
|
2016-07-10 00:22:20 +02:00
|
|
|
|
2017-08-31 02:14:52 +02:00
|
|
|
# export Qt resources from specified RES_FILES
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (RES_FILE ${RES_FILES})
|
2017-02-11 02:04:12 +01:00
|
|
|
get_filename_component(RES_EXT ${RES_FILE} EXT)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (RES_EXT STREQUAL ".qrc")
|
2017-02-11 02:04:12 +01:00
|
|
|
get_filename_component(RES_NAME ${RES_FILE} NAME_WE)
|
|
|
|
list(APPEND QT_RESOURCES "${RES_NAME}")
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2017-08-06 00:41:00 +02:00
|
|
|
|
2017-08-31 02:14:52 +02:00
|
|
|
# export Qt resources required by static libraries the static library depends on
|
2019-04-26 17:37:20 +02:00
|
|
|
if (STATIC_LIBRARIES_QT_RESOURCES)
|
2017-08-31 02:14:52 +02:00
|
|
|
list(REMOVE_DUPLICATES STATIC_LIBRARIES_QT_RESOURCES)
|
|
|
|
list(APPEND QT_RESOURCES ${STATIC_LIBRARIES_QT_RESOURCES})
|
2019-02-06 17:32:10 +01:00
|
|
|
endif ()
|
2017-08-31 02:14:52 +02:00
|
|
|
|
2019-04-04 19:13:30 +02:00
|
|
|
# enable Qt resources required by libraries the application depends on
|
|
|
|
if (QT_RESOURCES)
|
|
|
|
list(REMOVE_DUPLICATES QT_RESOURCES)
|
2017-08-06 00:41:00 +02:00
|
|
|
|
2020-03-17 19:56:32 +01:00
|
|
|
# make enabling resources of static dependencies available via qtconfig.h
|
2017-08-06 00:41:00 +02:00
|
|
|
unset(ENABLE_QT_RESOURCES_OF_STATIC_DEPENDENCIES)
|
2019-04-04 19:13:30 +02:00
|
|
|
foreach (QT_RESOURCE ${STATIC_LIBRARIES_QT_RESOURCES})
|
2019-11-30 17:58:56 +01:00
|
|
|
set(ENABLE_QT_RESOURCES_OF_STATIC_DEPENDENCIES
|
2017-08-06 00:41:00 +02:00
|
|
|
"${ENABLE_QT_RESOURCES_OF_STATIC_DEPENDENCIES} \\\n struct initializer_${QT_RESOURCE} { \\\n initializer_${QT_RESOURCE}() { Q_INIT_RESOURCE(${QT_RESOURCE}); } \\\n ~initializer_${QT_RESOURCE}() { Q_CLEANUP_RESOURCE(${QT_RESOURCE}); } \\\n } dummy_${QT_RESOURCE};"
|
2019-11-30 17:58:56 +01:00
|
|
|
)
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
|
|
|
endif ()
|
2017-08-06 00:41:00 +02:00
|
|
|
|
2017-02-09 16:20:15 +01:00
|
|
|
# enable moc, uic and rcc by default for all targets
|
2016-04-16 00:50:31 +02:00
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (WIDGETS_UI_FILES AND WIDGETS_GUI)
|
2016-04-16 00:50:31 +02:00
|
|
|
set(CMAKE_AUTOUIC ON)
|
2019-02-06 17:32:10 +01:00
|
|
|
if (INSTALL_UI_HEADER)
|
2016-08-19 16:16:10 +02:00
|
|
|
# also add install for header files generated by uic
|
2019-02-06 17:32:10 +01:00
|
|
|
foreach (UI_FILE WIDGETS_UI_FILES)
|
2016-04-16 18:32:56 +02:00
|
|
|
get_filename_component(UI_NAME "${UI_FILE}" NAME_WE)
|
2019-11-30 17:58:56 +01:00
|
|
|
install(
|
|
|
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/ui_${UI_NAME}.h"
|
2020-02-01 00:01:37 +01:00
|
|
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${META_PROJECT_NAME}/ui"
|
2019-11-30 17:58:56 +01:00
|
|
|
COMPONENT ui-header)
|
2019-02-06 17:32:10 +01:00
|
|
|
endforeach ()
|
|
|
|
endif ()
|
|
|
|
endif ()
|
2017-02-11 02:31:43 +01:00
|
|
|
|
2018-03-07 18:22:53 +01:00
|
|
|
# add configuration header for Qt-specific configuration
|
|
|
|
find_template_file("qtconfig.h" QT_UTILITIES QT_CONFIG_H_TEMPLATE_FILE)
|
2019-02-06 17:32:10 +01:00
|
|
|
configure_file("${QT_CONFIG_H_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/resources/qtconfig.h")
|
2018-03-07 18:22:53 +01:00
|
|
|
|
2017-02-11 02:31:43 +01:00
|
|
|
set(QT_CONFIGURED YES)
|