diff options
author | Leander Beernaert <leander.beernaert@qt.io> | 2019-11-26 10:10:55 +0100 |
---|---|---|
committer | Leander Beernaert <leander.beernaert@qt.io> | 2019-12-04 10:48:06 +0000 |
commit | 0f220d473a6048c0f1267a96ed5cc18fa39ee61c (patch) | |
tree | 20b4c0bbaa908e86973466e5b2b8ae8e52dbbca7 /cmake | |
parent | 9eea24ed601d0aa243269fac64c9a65c3750d1b0 (diff) |
Collect Json Metatypes from CMake's Automoc
This patch adds a new bootstrap tool which will read CMake's
AutoGenInfo.json and ParseCache.txt to determine what the current
list of json files is that needs to be passed to moc --collect-json
option.
Right now this is enabled for qt_add_module() with the option
GENERATE_METATYPES. pro2cmake has also been updated to detect qmake's
CONFIG += metatypes and to generate the above option for modules.
The implementation lives in Qt6CoreMacros so it can eventually be used
in the public facing apis.
The generated meta types file is saved under the target property
QT_MODULE_META_TYPES_FILE.
Change-Id: I03709c662be81dd0912d0068c23ee2507bfe4383
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBuild.cmake | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 6f325adfb4..cf4e56ca19 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -1110,6 +1110,7 @@ function(qt_extend_target target) ${private_visibility_option} ${arg_LINK_OPTIONS}) if(NOT arg_HEADER_MODULE) + list(APPEND arg_MOC_OPTIONS "--output-json") set_target_properties("${target}" PROPERTIES AUTOMOC_MOC_OPTIONS "${arg_MOC_OPTIONS}" _qt_target_deps "${target_deps}" @@ -1354,7 +1355,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" + "NO_MODULE_HEADERS;STATIC;DISABLE_TOOLS_EXPORT;EXCEPTIONS;INTERNAL_MODULE;NO_SYNC_QT;NO_PRIVATE_MODULE;HEADER_MODULE;GENERATE_METATYPES" "CONFIG_MODULE_NAME;PRECOMPILED_HEADER" "${__default_private_args};${__default_public_args};QMAKE_MODULE_CONFIG;EXTRA_CMAKE_FILES;EXTRA_CMAKE_INCLUDES;NO_PCH_SOURCES" ${ARGN}) @@ -1696,6 +1697,18 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})") endif() qt_describe_module(${target}) + + # Generate metatypes + if (${arg_GENERATE_METATYPES}) + qt6_generate_meta_types_json_file(${target}) + get_target_property(target_metatypes_file ${target} QT_MODULE_META_TYPES_FILE) + if (target_metatypes_file) + set(metatypes_install_dir ${INSTALL_LIBDIR}/metatypes) + qt_copy_or_install(FILES ${target_metatypes_file} + DESTINATION ${metatypes_install_dir} + ) + endif() + endif() endfunction() function(qt_export_tools module_name) |