diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2021-01-18 17:11:20 +0100 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2021-01-20 08:55:48 +0100 |
commit | e5a862303218b6c90ed702cefd20edb759f1c831 (patch) | |
tree | 02df189d76829a3034f174cd51c68ae3db6bb003 /cmake/QtAutogenHelpers.cmake | |
parent | ca211da2fa572161904f31499a3dd59e5bb6fc85 (diff) |
Add arguments to 'qt_manual_moc' to resolve 'moc' includes
'qt_manual_moc' doesn't provide include paths for 'moc' command to
substitute required macros. This change adds the
'INCLUDE_DIRECTORIES' and 'INCLUDE_DIRECTORY_TARGETS' arguments to
the 'qt_manual_moc' function.
If 'INCLUDE_DIRECTORY_TARGETS' is specified, 'qt_manual_moc'
collects 'INTERFACE_INCLUDE_DIRECTORIES' of provided targets and
uses them as the 'moc' include directories.
Change-Id: I58c8887dae3ca2484574c5e12e2cbd47f5bd3648
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'cmake/QtAutogenHelpers.cmake')
-rw-r--r-- | cmake/QtAutogenHelpers.cmake | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/cmake/QtAutogenHelpers.cmake b/cmake/QtAutogenHelpers.cmake index f028452320..55d04b5c36 100644 --- a/cmake/QtAutogenHelpers.cmake +++ b/cmake/QtAutogenHelpers.cmake @@ -75,8 +75,15 @@ endfunction() # Complete manual moc invocation with full control. # Use AUTOMOC whenever possible. +# INCLUDE_DIRECTORIES specifies a list of include directories used by 'moc'. +# INCLUDE_DIRECTORY_TARGETS specifies a list of targets to extract the INTERFACE_INCLUDE_DIRECTORIES +# property and use it as the 'moc' include directories. function(qt_manual_moc result) - cmake_parse_arguments(arg "" "OUTPUT_MOC_JSON_FILES" "FLAGS" ${ARGN}) + cmake_parse_arguments(arg + "" + "OUTPUT_MOC_JSON_FILES" + "FLAGS;INCLUDE_DIRECTORIES;INCLUDE_DIRECTORY_TARGETS" + ${ARGN}) set(moc_files) set(metatypes_json_list) foreach(infile ${arg_UNPARSED_ARGUMENTS}) @@ -87,6 +94,17 @@ function(qt_manual_moc result) set(moc_parameters_file "${outfile}_parameters$<$<BOOL:$<CONFIGURATION>>:_$<CONFIGURATION>>") set(moc_parameters ${arg_FLAGS} -o "${outfile}" "${infile}") + foreach(dir IN ITEMS ${arg_INCLUDE_DIRECTORIES}) + list(APPEND moc_parameters + "-I\n${dir}") + endforeach() + + foreach(dep IN ITEMS ${arg_INCLUDE_DIRECTORY_TARGETS}) + set(include_expr "$<TARGET_PROPERTY:${dep},INTERFACE_INCLUDE_DIRECTORIES>") + list(APPEND moc_parameters + "$<$<BOOL:${include_expr}>:-I\n$<JOIN:${include_expr},\n-I\n>>") + endforeach() + set(metatypes_byproducts) if (arg_OUTPUT_MOC_JSON_FILES) set(moc_json_file "${outfile}.json") |