Provide an imported target for libs
This commit is contained in:
parent
5531450c0a
commit
e1a8a12670
|
@ -123,13 +123,13 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" "${CMAKE_MODUL
|
|||
# configure platform specific capslock detection
|
||||
if(WIN32)
|
||||
# WinAPI provides functions required for capslock detection
|
||||
add_definitions(-DPLATFORM_SPECIFIC_CAPSLOCK_DETECTION)
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS PLATFORM_SPECIFIC_CAPSLOCK_DETECTION)
|
||||
else()
|
||||
# X11 can provide functions required for capslock detection under non-Windows environments
|
||||
find_package(X11)
|
||||
if(X11_FOUND)
|
||||
list(APPEND LIBRARIES ${X11_LIBRARIES})
|
||||
add_definitions(-DPLATFORM_SPECIFIC_CAPSLOCK_DETECTION -DX_AVAILABLE)
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS PLATFORM_SPECIFIC_CAPSLOCK_DETECTION)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -3,41 +3,42 @@
|
|||
include(QtLinkage)
|
||||
|
||||
set(JS_PROVIDER "auto" CACHE STRING "specifies the JavaScript provider: auto (default), qml, script or none")
|
||||
if(${JS_PROVIDER} STREQUAL "auto")
|
||||
if(NOT JS_PROVIDER OR "${JS_PROVIDER}" STREQUAL "auto")
|
||||
find_qt5_module(Script OPTIONAL)
|
||||
if(QT5_Script_FOUND)
|
||||
set(JS_PROVIDER Script)
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_SCRIPT")
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_SCRIPT")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "script")
|
||||
message(STATUS "No JavaScript provider explicitly specified, defaulting to Qt Script.")
|
||||
else()
|
||||
find_qt5_module(Qml OPTIONAL)
|
||||
if(QT5_Qml_FOUND)
|
||||
set(JS_PROVIDER Qml)
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_JSENGINE")
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_JSENGINE")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "declarative")
|
||||
message(STATUS "No JavaScript provider explicitly specified, defaulting to Qt QML.")
|
||||
else()
|
||||
set(JS_PROVIDER "")
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_NO_JSENGINE")
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_NO_JSENGINE")
|
||||
message(STATUS "No JavaScript provider available, features requiring JavaScript have been disabled.")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if(${JS_PROVIDER} STREQUAL "script")
|
||||
find_qt5_module(Script REQUIRED)
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_SCRIPT")
|
||||
set(JS_PROVIDER Script)
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_SCRIPT")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "script")
|
||||
message(STATUS "Using Qt Script as JavaScript provider.")
|
||||
elseif(${JS_PROVIDER} STREQUAL "qml")
|
||||
find_qt5_module(Qml REQUIRED)
|
||||
set(JS_PROVIDER Qml)
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_JSENGINE")
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_JSENGINE")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "declarative")
|
||||
message(STATUS "Using Qt QML as JavaScript provider.")
|
||||
elseif(${JS_PROVIDER} STREQUAL "none")
|
||||
set(JS_PROVIDER "")
|
||||
set(JS_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_NO_JSENGINE")
|
||||
set(JS_DEFINITION "${META_PROJECT_VARNAME_UPPER}_NO_JSENGINE")
|
||||
message(STATUS "JavaScript provider has been disabled.")
|
||||
else()
|
||||
message(FATAL_ERROR "The specified JavaScript provider '${JS_PROVIDER}' is unknown.")
|
||||
|
@ -45,6 +46,6 @@ else()
|
|||
endif()
|
||||
|
||||
if(JS_PROVIDER)
|
||||
use_qt5_module(${JS_PROVIDER} OPTIONAL)
|
||||
use_qt5_module(${JS_PROVIDER} REQUIRED)
|
||||
endif()
|
||||
add_definitions(${JS_DEFINITION})
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS ${JS_DEFINITION})
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
||||
|
||||
# applies Qt specific configuration
|
||||
# for GUI applications, QtGuiAppConfig must be included before
|
||||
# after including this module, AppTarget must be included
|
||||
|
@ -23,11 +25,18 @@ if(SVG_SUPPORT OR ((USE_STATIC_QT_BUILD AND (WIDGETS_GUI OR QUICK_GUI)) AND SVG_
|
|||
list(APPEND QT_REPOS svg)
|
||||
endif()
|
||||
|
||||
# remove duplicates
|
||||
list(REMOVE_DUPLICATES QT_REPOS)
|
||||
list(REMOVE_DUPLICATES QT_MODULES)
|
||||
if(IMPORTED_QT_MODULES)
|
||||
list(REMOVE_DUPLICATES IMPORTED_QT_MODULES)
|
||||
endif()
|
||||
if(KF_MODULES)
|
||||
list(REMOVE_DUPLICATES KF_MODULES)
|
||||
endif()
|
||||
if(IMPORTED_KF_MODULES)
|
||||
list(REMOVE_DUPLICATES IMPORTED_KF_MODULES)
|
||||
endif()
|
||||
|
||||
# actually find the required Qt/KF modules
|
||||
foreach(QT_MODULE ${QT_MODULES})
|
||||
|
@ -35,28 +44,34 @@ foreach(QT_MODULE ${QT_MODULES})
|
|||
find_qt5_module(${QT_MODULE} REQUIRED)
|
||||
use_qt5_module(${QT_MODULE} REQUIRED)
|
||||
endforeach()
|
||||
foreach(QT_MODULE ${IMPORTED_QT_MODULES})
|
||||
if(NOT "${QT_MODULE}" IN_LIST QT_MODULES)
|
||||
find_qt5_module(${QT_MODULE} REQUIRED)
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(KF_MODULE ${KF_MODULES})
|
||||
# only shared KF5 modules supported
|
||||
find_package(KF5${KF_MODULE} REQUIRED)
|
||||
set(KF5_${KF_MODULE}_DYNAMIC_LIB KF5::${KF_MODULE})
|
||||
link_against_library(KF5_${KF_MODULE} "AUTO_LINKAGE" REQUIRED)
|
||||
endforeach()
|
||||
foreach(KF_MODULE ${IMPORTED_KF_MODULES})
|
||||
if(NOT "${KF_MODULE}" IN_LIST KF_MODULES)
|
||||
find_package(KF5${KF_MODULE} REQUIRED)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# tune for static build
|
||||
if(USE_STATIC_QT5_CORE AND (WIDGETS_GUI OR QUICK_GUI))
|
||||
# include plugins statically
|
||||
if(WIN32)
|
||||
list(APPEND LIBRARIES Qt5::static::QWindowsIntegrationPlugin)
|
||||
list(APPEND STATIC_LIBRARIES Qt5::static::QWindowsIntegrationPlugin)
|
||||
list(APPEND PRIVATE_LIBRARIES Qt5::static::QWindowsIntegrationPlugin)
|
||||
list(APPEND PRIVATE_STATIC_LIBRARIES Qt5::static::QWindowsIntegrationPlugin)
|
||||
endif()
|
||||
if(SVG_ICON_SUPPORT)
|
||||
list(APPEND LIBRARIES Qt5::QSvgPlugin)
|
||||
list(APPEND STATIC_LIBRARIES Qt5::QSvgPlugin)
|
||||
list(APPEND PRIVATE_LIBRARIES Qt5::static::QSvgPlugin)
|
||||
list(APPEND PRIVATE_STATIC_LIBRARIES Qt5::static::QSvgPlugin)
|
||||
endif()
|
||||
|
||||
# workaround for missing compile definition GRAPHITE2_STATIC
|
||||
#set_property(TARGET Qt5::Gui APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS GRAPHITE2_STATIC)
|
||||
|
||||
endif()
|
||||
|
||||
# option for built-in translations
|
||||
|
|
|
@ -4,10 +4,7 @@ cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
|||
|
||||
# enable Qt Widgets GUI
|
||||
if(WIDGETS_GUI)
|
||||
add_definitions(
|
||||
-DGUI_QTWIDGETS
|
||||
-DMODEL_UNDO_SUPPORT
|
||||
)
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS GUI_QTWIDGETS MODEL_UNDO_SUPPORT)
|
||||
list(APPEND WIDGETS_FILES ${WIDGETS_HEADER_FILES} ${WIDGETS_SRC_FILES} ${WIDGETS_RES_FILES} ${WIDGETS_UI_FILES})
|
||||
list(APPEND ADDITIONAL_HEADER_FILES ${WIDGETS_HEADER_FILES})
|
||||
if(WIDGETS_FILES)
|
||||
|
@ -22,9 +19,7 @@ endif()
|
|||
|
||||
# enable Qt Quick GUI
|
||||
if(QUICK_GUI)
|
||||
add_definitions(
|
||||
-DGUI_QTQUICK
|
||||
)
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS GUI_QTQUICK)
|
||||
list(APPEND QML_FILES ${QML_HEADER_FILES} ${QML_SRC_FILES} ${QML_RES_FILES})
|
||||
list(APPEND ADDITIONAL_HEADER_FILES ${QML_HEADER_FILES})
|
||||
if(QML_FILES)
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
||||
|
||||
# determines the Qt linkage
|
||||
|
||||
if(NOT DEFINED QT_LINKAGE_DETERMINED)
|
||||
|
@ -36,6 +38,8 @@ if(NOT DEFINED QT_LINKAGE_DETERMINED)
|
|||
set(QT5_${MODULE}_STATIC_LIB Qt5::static::${MODULE})
|
||||
set(QT5_${MODULE}_ASSUME_STATIC OFF)
|
||||
set(QT5_${MODULE}_FOUND ON)
|
||||
# reverse lookup for pkg-config
|
||||
set(PC_PKG_STATIC_Qt5_static_${MODULE} "StaticQt5${MODULE}")
|
||||
else()
|
||||
# consider the regular Qt package (without "Static" prefix) the static version if
|
||||
# static Qt is required and Qt package with "Static" prefix doesn't exist
|
||||
|
@ -46,6 +50,8 @@ if(NOT DEFINED QT_LINKAGE_DETERMINED)
|
|||
set(QT5_${MODULE}_STATIC_LIB Qt5::${MODULE})
|
||||
set(QT5_${MODULE}_ASSUME_STATIC ON)
|
||||
set(QT5_${MODULE}_FOUND ON)
|
||||
# reverse lookup for pkg-config
|
||||
set(PC_PKG_STATIC_Qt5_${MODULE} "Qt5${MODULE}")
|
||||
message(WARNING "Building static libs and/or static Qt linkage has been enabled. Hence assuming provided Qt 5 ${MODULE} library is static.")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -61,12 +67,18 @@ if(NOT DEFINED QT_LINKAGE_DETERMINED)
|
|||
if(Qt5${MODULE}_FOUND)
|
||||
set(QT5_${MODULE}_DYNAMIC_LIB Qt5::${MODULE})
|
||||
set(QT5_${MODULE}_FOUND ON)
|
||||
# reverse lookup for pkg-config
|
||||
set(PC_PKG_SHARED_Qt5_${MODULE} "Qt5${MODULE}")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(use_qt5_module MODULE REQUIRED)
|
||||
link_against_library("QT5_${MODULE}" "${QT_LINKAGE}" "${REQUIRED}")
|
||||
if(${MODULE} IN_LIST META_PUBLIC_QT_MODULES)
|
||||
list(APPEND META_PUBLIC_SHARED_LIB_DEPENDS ${QT5_${MODULE}_DYNAMIC_LIB})
|
||||
list(APPEND META_PUBLIC_STATIC_LIB_DEPENDS ${QT5_${MODULE}_STATIC_LIB})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(use_static_qt5_plugin PLUGIN)
|
||||
|
|
|
@ -3,22 +3,22 @@
|
|||
include(QtLinkage)
|
||||
|
||||
set(WEBVIEW_PROVIDER "auto" CACHE STRING "specifies the web view provider: auto (default), webkit, webengine or none")
|
||||
if(${WEBVIEW_PROVIDER} STREQUAL "auto")
|
||||
if(NOT WEBVIEW_PROVIDER OR "${WEBVIEW_PROVIDER}" STREQUAL "auto")
|
||||
find_qt5_module(WebKitWidgets OPTIONAL)
|
||||
if(QT5_WebKitWidgets_FOUND)
|
||||
set(WEBVIEW_PROVIDER WebKitWidgets)
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_WEBKIT")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_WEBKIT")
|
||||
message(STATUS "No web view provider explicitly specified, defaulting to Qt WebKit.")
|
||||
else()
|
||||
find_qt5_module(WebEngineWidgets OPTIONAL)
|
||||
if(QT5_WebEngineWidgets_FOUND)
|
||||
set(WEBVIEW_PROVIDER WebEngineWidgets)
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_WEBENGINE")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_WEBENGINE")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "webengine")
|
||||
message(STATUS "No web view provider explicitly specified, defaulting to Qt WebEngine.")
|
||||
else()
|
||||
set(WEBVIEW_PROVIDER "")
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_NO_WEBVIEW")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_NO_WEBVIEW")
|
||||
message(STATUS "No web view provider available, web view has been disabled.")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -26,16 +26,16 @@ else()
|
|||
if(${WEBVIEW_PROVIDER} STREQUAL "webkit")
|
||||
find_qt5_module(WebKitWidgets REQUIRED)
|
||||
set(WEBVIEW_PROVIDER WebKitWidgets)
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_WEBKIT")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_WEBKIT")
|
||||
message(STATUS "Using Qt WebKit as web view provider.")
|
||||
elseif(${WEBVIEW_PROVIDER} STREQUAL "webengine")
|
||||
find_qt5_module(WebEngineWidgets REQUIRED)
|
||||
set(WEBVIEW_PROVIDER WebEngineWidgets)
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_USE_WEBENGINE")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_USE_WEBENGINE")
|
||||
list(APPEND ADDITIONAL_QT_REPOS "webengine")
|
||||
message(STATUS "Using Qt WebEngine as web view provider.")
|
||||
elseif(${WEBVIEW_PROVIDER} STREQUAL "none")
|
||||
set(WEBVIEW_DEFINITION "-D${META_PROJECT_VARNAME_UPPER}_NO_WEBVIEW")
|
||||
set(WEBVIEW_DEFINITION "${META_PROJECT_VARNAME_UPPER}_NO_WEBVIEW")
|
||||
set(WEBVIEW_PROVIDER "")
|
||||
message(STATUS "Web view has been disabled.")
|
||||
else()
|
||||
|
@ -44,6 +44,6 @@ else()
|
|||
endif()
|
||||
|
||||
if(WEBVIEW_PROVIDER)
|
||||
use_qt5_module(${WEBVIEW_PROVIDER} OPTIONAL)
|
||||
use_qt5_module(${WEBVIEW_PROVIDER} REQUIRED)
|
||||
endif()
|
||||
add_definitions(${WEBVIEW_DEFINITION})
|
||||
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS ${WEBVIEW_DEFINITION})
|
||||
|
|
Loading…
Reference in New Issue