From 735078cd805709ed08cefe5195ce0535f6b7acc7 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 30 Sep 2020 18:38:14 +0200 Subject: [PATCH] CMake build: Create shared lib for shared part of qmlpuppet Which is used by external plugins. Change-Id: I2d700c02ff3d4b2d692486bd64ef16449deffc4e Reviewed-by: Cristian Adam --- cmake/QtCreatorAPI.cmake | 42 ++++++++++--- src/tools/qml2puppet/CMakeLists.txt | 97 ++++++++++++++++------------- 2 files changed, 87 insertions(+), 52 deletions(-) diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index bb1b4985e26..9bb27649591 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -65,7 +65,7 @@ endfunction() function(add_qtc_library name) cmake_parse_arguments(_arg "STATIC;OBJECT;SKIP_TRANSLATION;BUILD_BY_DEFAULT;ALLOW_ASCII_CASTS;UNVERSIONED" - "DESTINATION;COMPONENT" + "DESTINATION;COMPONENT;SOURCES_PREFIX" "DEPENDS;PUBLIC_DEPENDS;DEFINES;PUBLIC_DEFINES;INCLUDES;PUBLIC_INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN} ) @@ -94,6 +94,20 @@ function(add_qtc_library name) endif() endif() + # TODO copied from extend_qtc_target. + # Instead require CMake 3.11 and use extend_qtc_target for setting SOURCES. + # Requiring cmake 3.11 is necessary because before that add_library requires + # at least one source file. + if (_arg_SOURCES_PREFIX) + foreach(source IN LISTS _arg_SOURCES) + list(APPEND prefixed_sources "${_arg_SOURCES_PREFIX}/${source}") + endforeach() + if (NOT IS_ABSOLUTE ${_arg_SOURCES_PREFIX}) + set(_arg_SOURCES_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/${_arg_SOURCES_PREFIX}") + endif() + set(_arg_SOURCES ${prefixed_sources}) + endif() + compare_sources_with_existing_disk_files(${name} "${_arg_SOURCES}") set(library_type SHARED) @@ -114,6 +128,11 @@ function(add_qtc_library name) add_library(${IDE_CASED_ID}::${name} ALIAS ${name}) set_public_headers(${name} "${_arg_SOURCES}") + # TODO remove, see above + if (_arg_SOURCES_PREFIX) + target_include_directories(${name} PRIVATE $) + endif() + if (${name} MATCHES "^[^0-9-]+$") string(TOUPPER "${name}_LIBRARY" EXPORT_SYMBOL) endif() @@ -134,15 +153,18 @@ function(add_qtc_library name) EXTRA_TRANSLATIONS ${_arg_EXTRA_TRANSLATIONS} ) - get_filename_component(public_build_interface_dir "${CMAKE_CURRENT_SOURCE_DIR}/.." ABSOLUTE) - file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/..") - target_include_directories(${name} - PRIVATE - "$" - PUBLIC - "$" - "$" - ) + # everything is different with SOURCES_PREFIX + if (NOT _arg_SOURCES_PREFIX) + get_filename_component(public_build_interface_dir "${CMAKE_CURRENT_SOURCE_DIR}/.." ABSOLUTE) + file(RELATIVE_PATH include_dir_relative_path ${PROJECT_SOURCE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/..") + target_include_directories(${name} + PRIVATE + "$" + PUBLIC + "$" + "$" + ) + endif() set(skip_translation OFF) if (_arg_SKIP_TRANSLATION) diff --git a/src/tools/qml2puppet/CMakeLists.txt b/src/tools/qml2puppet/CMakeLists.txt index 36be18f8297..7d1d32c19b9 100644 --- a/src/tools/qml2puppet/CMakeLists.txt +++ b/src/tools/qml2puppet/CMakeLists.txt @@ -5,19 +5,58 @@ if (APPLE) string(APPEND DESTDIR "/qmldesigner") endif() -add_qtc_executable(qml2puppet +add_qtc_library(qml2puppet_static + STATIC DEPENDS - Qt5::CorePrivate Qt5::Widgets Qt5::QmlPrivate - Qt5::QuickPrivate Qt5::Network Qt5::GuiPrivate + Qt5::CorePrivate Qt5::Gui + PUBLIC_INCLUDES "${SRCDIR}/interfaces" + SOURCES_PREFIX "${SRCDIR}/interfaces" SOURCES - "${SRCDIR}/qml2puppet/qml2puppetmain.cpp" - "${SRCDIR}/qmlpuppet.qrc" - DESTINATION ${DESTDIR} + commondefines.h + nodeinstanceclientinterface.h + nodeinstanceglobal.h + nodeinstanceserverinterface.cpp nodeinstanceserverinterface.h ) -extend_qtc_executable(qml2puppet +extend_qtc_library(qml2puppet_static + PUBLIC_INCLUDES "${SRCDIR}/types" + SOURCES "${SRCDIR}/types/enumeration.h" +) + +extend_qtc_library(qml2puppet_static + PUBLIC_INCLUDES "${SRCDIR}/container" + SOURCES_PREFIX "${SRCDIR}/container" + SOURCES + addimportcontainer.cpp addimportcontainer.h + idcontainer.cpp idcontainer.h + imagecontainer.cpp imagecontainer.h + informationcontainer.cpp informationcontainer.h + instancecontainer.cpp instancecontainer.h + mockuptypecontainer.cpp mockuptypecontainer.h + propertyabstractcontainer.cpp propertyabstractcontainer.h + propertybindingcontainer.cpp propertybindingcontainer.h + propertyvaluecontainer.cpp propertyvaluecontainer.h + reparentcontainer.cpp reparentcontainer.h + sharedmemory.h +) + +extend_qtc_library(qml2puppet_static + CONDITION UNIX + SOURCES_PREFIX "${SRCDIR}/container" + SOURCES + sharedmemory_unix.cpp +) + +extend_qtc_library(qml2puppet_static + CONDITION NOT UNIX + SOURCES_PREFIX "${SRCDIR}/container" + SOURCES + sharedmemory_qt.cpp +) + +extend_qtc_library(qml2puppet_static + PUBLIC_INCLUDES "${SRCDIR}/commands" SOURCES_PREFIX "${SRCDIR}/commands" - INCLUDES "${PROJECT_SOURCE_DIR}/src/libs" SOURCES changeauxiliarycommand.cpp changeauxiliarycommand.h changebindingscommand.cpp changebindingscommand.h @@ -57,38 +96,21 @@ extend_qtc_executable(qml2puppet scenecreatedcommand.h ) -extend_qtc_executable(qml2puppet - SOURCES_PREFIX "${SRCDIR}/container" +add_qtc_executable(qml2puppet + DEPENDS + Qt5::CorePrivate Qt5::Widgets Qt5::QmlPrivate + Qt5::QuickPrivate Qt5::Network Qt5::GuiPrivate + qml2puppet_static SOURCES - addimportcontainer.cpp addimportcontainer.h - idcontainer.cpp idcontainer.h - imagecontainer.cpp imagecontainer.h - informationcontainer.cpp informationcontainer.h - instancecontainer.cpp instancecontainer.h - mockuptypecontainer.cpp mockuptypecontainer.h - propertyabstractcontainer.cpp propertyabstractcontainer.h - propertybindingcontainer.cpp propertybindingcontainer.h - propertyvaluecontainer.cpp propertyvaluecontainer.h - reparentcontainer.cpp reparentcontainer.h - sharedmemory.h + "${SRCDIR}/qml2puppet/qml2puppetmain.cpp" + "${SRCDIR}/qmlpuppet.qrc" + DESTINATION ${DESTDIR} ) -extend_qtc_executable(qml2puppet - CONDITION UNIX - SOURCES_PREFIX "${SRCDIR}/container" - SOURCES - sharedmemory_unix.cpp -) extend_qtc_executable(qml2puppet CONDITION UNIX AND (NOT APPLE) DEPENDS rt ) -extend_qtc_executable(qml2puppet - CONDITION NOT UNIX - SOURCES_PREFIX "${SRCDIR}/container" - SOURCES - sharedmemory_qt.cpp -) extend_qtc_executable(qml2puppet SOURCES_PREFIX "${SRCDIR}/instances" @@ -115,15 +137,6 @@ extend_qtc_executable(qml2puppet icongizmoimageprovider.cpp icongizmoimageprovider.h ) -extend_qtc_executable(qml2puppet - SOURCES_PREFIX "${SRCDIR}/interfaces" - SOURCES - commondefines.h - nodeinstanceclientinterface.h - nodeinstanceglobal.h - nodeinstanceserverinterface.cpp nodeinstanceserverinterface.h -) - extend_qtc_executable(qml2puppet SOURCES_PREFIX "${SRCDIR}/qml2puppet/iconrenderer" SOURCES