diff options
author | Brad King <brad.king@kitware.com> | 2021-04-21 14:42:08 +0000 |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2021-04-21 10:42:16 -0400 |
commit | b0f203f133ab3f4af1a00ad556de34c9b0db8c91 (patch) | |
tree | 9ded0cd7dfe4f4bda7e97eae2af18fb6e7b3a905 | |
parent | b0be93c5c73225517bba233f95f4775141ed3091 (diff) | |
parent | b84f1e61595d4c9344a13fa4bf76d8a258757f1b (diff) | |
download | cmake-b0f203f133ab3f4af1a00ad556de34c9b0db8c91.tar.gz |
Merge topic 'autogen-clear-early-source-cache' into release-3.20
b84f1e6159 Autogen: Restore mocs_compilation in OBJECT libraries
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6024
-rw-r--r-- | Source/cmQtAutoGenGlobalInitializer.cxx | 5 | ||||
-rw-r--r-- | Tests/QtAutogen/ObjectLibrary/CMakeLists.txt | 5 | ||||
-rw-r--r-- | Tests/RunCMake/ObjectLibrary/OwnSources-stderr.txt | 6 |
3 files changed, 16 insertions, 0 deletions
diff --git a/Source/cmQtAutoGenGlobalInitializer.cxx b/Source/cmQtAutoGenGlobalInitializer.cxx index f79ffd4a0f..f8d18f27a2 100644 --- a/Source/cmQtAutoGenGlobalInitializer.cxx +++ b/Source/cmQtAutoGenGlobalInitializer.cxx @@ -97,6 +97,11 @@ cmQtAutoGenGlobalInitializer::cmQtAutoGenGlobalInitializer( } std::set<std::string> const& languages = target->GetAllConfigCompileLanguages(); + // cmGeneratorTarget::GetAllConfigCompileLanguages caches the target's + // sources. Clear it so that OBJECT library targets that are AUTOGEN + // initialized after this target get their added mocs_compilation.cpp + // source acknowledged by this target. + target->ClearSourcesCache(); if (languages.count("CSharp")) { // Don't process target if it's a CSharp target continue; diff --git a/Tests/QtAutogen/ObjectLibrary/CMakeLists.txt b/Tests/QtAutogen/ObjectLibrary/CMakeLists.txt index ec204e775d..e8af6c9838 100644 --- a/Tests/QtAutogen/ObjectLibrary/CMakeLists.txt +++ b/Tests/QtAutogen/ObjectLibrary/CMakeLists.txt @@ -16,3 +16,8 @@ target_compile_features(b PRIVATE ${QT_COMPILE_FEATURES}) # Executable with OBJECT library generator expressions add_executable(someProgram main.cpp $<TARGET_OBJECTS:a> $<TARGET_OBJECTS:b>) target_link_libraries(someProgram ${QT_LIBRARIES}) + +# Executable without its own AUTOMOC. +add_executable(someProgram2 main.cpp) +target_link_libraries(someProgram2 PRIVATE a b ${QT_LIBRARIES}) +set_property(TARGET someProgram2 PROPERTY AUTOMOC OFF) diff --git a/Tests/RunCMake/ObjectLibrary/OwnSources-stderr.txt b/Tests/RunCMake/ObjectLibrary/OwnSources-stderr.txt index cb1a2e5c88..69230b63f9 100644 --- a/Tests/RunCMake/ObjectLibrary/OwnSources-stderr.txt +++ b/Tests/RunCMake/ObjectLibrary/OwnSources-stderr.txt @@ -10,4 +10,10 @@ CMake Error at OwnSources.cmake:[0-9]+ \(add_library\): Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\) + +CMake Error at OwnSources.cmake:[0-9]+ \(add_library\): + The SOURCES of "A" use a generator expression that depends on the SOURCES + themselves. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) ++ CMake Generate step failed\. Build files cannot be regenerated correctly\.$ |