Fix top level builds where AUTOMOC_EXECUTABLE was unset on some targets
The qt_example_build_end() command tries to recursively find all build system targets by descending into all source directories. Some sets of examples re-use the same source directory multiple times with different build directories, but this hides all but one of those re-used source directories from the recursive search. This resulted in some targets being missed, which in turn prevented qt_autogen_tools() from being called on them. In top level builds, this meant AUTOMOC_EXECUTABLE wasn't set, so CMake tried to verify the moc it wanted to use, which doesn't exist for the first configure of a top level build, resulting in a fatal error. Since we can't find all targets reliably with a recursive search, manually handle the ones that could be missed. There was a similar problem with qt_autogen_tools() not being called for a target created to compile a doc snippet. The error message is the same as the case above, the cause is again AUTOMOC_EXECUTABLE not being set, but for a different reason. Apply the same fix and call it manually, which should have been the case originally. Fixes: QTBUG-96118 Fixes: QTBUG-96159 Pick-to: 6.2 Change-Id: I079c696cf74f77d7caa2c59e6263d3fb1c55d20e Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
parent
c1c6e15874
commit
920a5f727b
|
@ -10,7 +10,7 @@ qt_internal_add_example(keyinteraction)
|
|||
qt_internal_add_example(layouts)
|
||||
add_subdirectory(localstorage)
|
||||
add_subdirectory(models)
|
||||
#qt_internal_add_example(views)
|
||||
qt_internal_add_example(views)
|
||||
add_subdirectory(tableview)
|
||||
qt_internal_add_example(mousearea)
|
||||
qt_internal_add_example(positioners)
|
||||
|
@ -19,12 +19,12 @@ add_subdirectory(scenegraph)
|
|||
qt_internal_add_example(shadereffects)
|
||||
qt_internal_add_example(text)
|
||||
qt_internal_add_example(threading)
|
||||
#qt_internal_add_example(touchinteraction)
|
||||
qt_internal_add_example(touchinteraction)
|
||||
add_subdirectory(tutorials)
|
||||
add_subdirectory(customitems)
|
||||
qt_internal_add_example(imageprovider)
|
||||
qt_internal_add_example(imageresponseprovider)
|
||||
#qt_internal_add_example(window)
|
||||
qt_internal_add_example(window)
|
||||
add_subdirectory(particles)
|
||||
qt_internal_add_example(delegatechooser)
|
||||
qt_internal_add_example(shapes)
|
||||
|
@ -37,3 +37,20 @@ endif()
|
|||
if(TARGET Qt::QuickWidgets AND TARGET Qt::Widgets AND (QT_FEATURE_opengl OR QT_FEATURE_opengles2 OR QT_FEATURE_opengles3))
|
||||
add_subdirectory(quickwidgets)
|
||||
endif()
|
||||
|
||||
# qt_examples_build_end() misses at least some of these due to some
|
||||
# source subdirectories being added multiple times. See QTBUG-96159.
|
||||
set(reused_dir_targets
|
||||
view_shared
|
||||
touchinteraction_shared
|
||||
window_shared
|
||||
shapes_shared
|
||||
)
|
||||
foreach(target IN LISTS reused_dir_targets)
|
||||
if(TARGET ${target})
|
||||
qt_autogen_tools(${target} ENABLE_AUTOGEN_TOOLS moc rcc)
|
||||
if(TARGET Qt::Widgets)
|
||||
qt_autogen_tools(${target} ENABLE_AUTOGEN_TOOLS uic)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
|
|
@ -685,6 +685,7 @@ qt_internal_add_docs(Qml
|
|||
)
|
||||
|
||||
# include snippet projects for developer builds
|
||||
if(NOT QT_SUPERBUILD AND QT_FEATURE_private_tests AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
|
||||
if(QT_FEATURE_private_tests AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
|
||||
add_subdirectory(doc/snippets/cmake/qt_target_qml_sources)
|
||||
qt_autogen_tools(qt_target_qml_sources_example ENABLE_AUTOGEN_TOOLS moc)
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue