From e5683c5e5ffe1a260b19f453b03451e48a352a54 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 15 May 2020 11:37:08 +0200 Subject: CMake: Add MODULE_INCLUDE_NAME one-value-keyword to qt_add_module This value is the equivalent of qt_module.prf's MODULE_INCNAME and can be used to specify a name for the module's include subdirectory. The default is Qt. The include name is stored in the module's target property MODULE_INCLUDE_NAME. Change-Id: Ie6c8f6882ee2c3db78884ae5781593c803be3c05 Reviewed-by: Alexandru Croitor --- cmake/QtBuild.cmake | 21 ++++++++++++++------- cmake/QtPostProcess.cmake | 6 +++--- 2 files changed, 17 insertions(+), 10 deletions(-) (limited to 'cmake') diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 4c37e1d4b1..f1634e54f6 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -1572,8 +1572,7 @@ function(qt_install_injections target build_dir install_dir) endfunction() -function(qt_read_headers_pri target resultVarPrefix) - qt_internal_module_info(module "${target}") +function(qt_read_headers_pri module_include_dir resultVarPrefix) file(STRINGS "${module_include_dir}/headers.pri" headers_pri_contents) foreach(line ${headers_pri_contents}) if("${line}" MATCHES "SYNCQT.HEADER_FILES = (.*)") @@ -1909,7 +1908,7 @@ function(qt_add_module target) # Process arguments: qt_parse_all_arguments(arg "qt_add_module" "NO_MODULE_HEADERS;STATIC;DISABLE_TOOLS_EXPORT;EXCEPTIONS;INTERNAL_MODULE;NO_SYNC_QT;NO_PRIVATE_MODULE;HEADER_MODULE;GENERATE_METATYPES;NO_CONFIG_HEADER_FILE;SKIP_DEPENDS_INCLUDE" - "CONFIG_MODULE_NAME;PRECOMPILED_HEADER;${__default_target_info_args}" + "MODULE_INCLUDE_NAME;CONFIG_MODULE_NAME;PRECOMPILED_HEADER;${__default_target_info_args}" "${__default_private_args};${__default_public_args};${__default_private_module_args};QMAKE_MODULE_CONFIG;EXTRA_CMAKE_FILES;EXTRA_CMAKE_INCLUDES;NO_PCH_SOURCES" ${ARGN}) if(NOT DEFINED arg_CONFIG_MODULE_NAME) @@ -2012,6 +2011,13 @@ function(qt_add_module target) if(${arg_NO_MODULE_HEADERS} OR ${arg_NO_SYNC_QT}) set_target_properties("${target}" PROPERTIES INTERFACE_MODULE_HAS_HEADERS OFF) else() + if(arg_MODULE_INCLUDE_NAME) + set(module_include_name ${arg_MODULE_INCLUDE_NAME}) + else() + set(module_include_name ${module}) + endif() + set_target_properties("${target}" PROPERTIES INTERFACE_MODULE_INCLUDE_NAME "${module_include_name}") + # Use QT_BUILD_DIR for the syncqt call. # So we either write the generated files into the qtbase non-prefix build root, or the # module specific build root. @@ -2019,7 +2025,7 @@ function(qt_add_module target) set(syncqt_full_command "${HOST_PERL}" -w "${QT_SYNCQT}" -quiet -check-includes - -module "${module}" + -module "${module_include_name}" -version "${PROJECT_VERSION}" -outdir "${QT_BUILD_DIR}" -builddir "${PROJECT_BINARY_DIR}" @@ -2029,7 +2035,8 @@ function(qt_add_module target) set_target_properties("${target}" PROPERTIES INTERFACE_MODULE_HAS_HEADERS ON) ### FIXME: Can we replace headers.pri? - qt_read_headers_pri("${target}" "module_headers") + set(module_include_dir "${QT_BUILD_DIR}/${INSTALL_INCLUDEDIR}/${module_include_name}") + qt_read_headers_pri("${module_include_dir}" "module_headers") set(module_depends_header "${module_include_dir}/${module}Depends") if(is_framework) if(NOT is_interface_lib) @@ -2043,7 +2050,7 @@ function(qt_add_module target) set_property(TARGET ${target} APPEND PROPERTY PRIVATE_HEADER "${module_headers_private}") endif() if (NOT ${arg_HEADER_MODULE}) - set_property(TARGET "${target}" PROPERTY MODULE_HEADER "${module_include_dir}/${module}") + set_property(TARGET "${target}" PROPERTY MODULE_HEADER "${module_include_dir}/${module_include_name}") endif() if(module_headers_qpa) @@ -2052,7 +2059,7 @@ function(qt_add_module target) else() qt_install( FILES ${module_headers_qpa} - DESTINATION ${INSTALL_INCLUDEDIR}/${module}/${PROJECT_VERSION}/${module}/qpa) + DESTINATION ${INSTALL_INCLUDEDIR}/${module}/${PROJECT_VERSION}/${module_include_name}/qpa) endif() endif() endif() diff --git a/cmake/QtPostProcess.cmake b/cmake/QtPostProcess.cmake index 1434999c06..8fbdf103c3 100644 --- a/cmake/QtPostProcess.cmake +++ b/cmake/QtPostProcess.cmake @@ -1,5 +1,4 @@ -function(qt_internal_write_depends_file target) - set(module Qt${target}) +function(qt_internal_write_depends_file module) set(outfile "${QT_BUILD_DIR}/${INSTALL_INCLUDEDIR}/${module}/${module}Depends") message("Generate ${outfile}...") set(contents "/* This file was generated by cmake with the info from ${module} target. */\n") @@ -171,7 +170,8 @@ function(qt_internal_create_module_depends_file target) get_target_property(hasModuleHeaders "${target}" INTERFACE_MODULE_HAS_HEADERS) if (${hasModuleHeaders}) - qt_internal_write_depends_file("${target}" ${qtdeps}) + get_target_property(module_include_name "${target}" INTERFACE_MODULE_INCLUDE_NAME) + qt_internal_write_depends_file(${module_include_name} ${qtdeps}) endif() if(third_party_deps OR main_module_tool_deps OR target_deps) -- cgit v1.2.3