Переглянути джерело

Merge topic 'fix-qtautogen-with-object-library-Ninja'

9bc6eb8e cmGlobalGenerator: Initialize generator targets on construction (#15729)
Brad King 10 роки тому
батько
коміт
130f116340

+ 2 - 0
Source/cmGeneratorTarget.cxx

@@ -275,6 +275,8 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg)
   this->LocalGenerator = lg;
   this->GlobalGenerator = this->LocalGenerator->GetGlobalGenerator();
 
+  this->GlobalGenerator->ComputeTargetObjectDirectory(this);
+
   CreatePropertyGeneratorExpressions(
         t->GetIncludeDirectoriesEntries(),
         t->GetIncludeDirectoriesBacktraces(),

+ 0 - 15
Source/cmGlobalGenerator.cxx

@@ -1263,8 +1263,6 @@ bool cmGlobalGenerator::Compute()
     this->LocalGenerators[i]->AddHelperCommands();
     }
 
-  this->InitGeneratorTargets();
-
 #ifdef CMAKE_BUILD_WITH_CMAKE
   for (std::vector<cmTarget const*>::iterator it = autogenTargets.begin();
        it != autogenTargets.end(); ++it)
@@ -1557,19 +1555,6 @@ void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes,
   mf->SetGeneratorTargets(generatorTargets);
 }
 
-//----------------------------------------------------------------------------
-void cmGlobalGenerator::InitGeneratorTargets()
-{
-  for(cmGeneratorTargetsType::iterator ti =
-      this->GeneratorTargets.begin(); ti != this->GeneratorTargets.end(); ++ti)
-    {
-    if (!ti->second->Target->IsImported())
-      {
-      this->ComputeTargetObjectDirectory(ti->second);
-      }
-    }
-}
-
 //----------------------------------------------------------------------------
 void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes)
 {

+ 0 - 1
Source/cmGlobalGenerator.h

@@ -480,7 +480,6 @@ private:
   cmGeneratorTargetsType GeneratorTargets;
   friend class cmake;
   void CreateGeneratorTargets(TargetTypes targetTypes, cmLocalGenerator* lg);
-  void InitGeneratorTargets();
   void CreateGeneratorTargets(TargetTypes targetTypes);
 
   void ClearGeneratorMembers();

+ 8 - 1
Tests/QtAutogen/CMakeLists.txt

@@ -101,7 +101,14 @@ add_executable(QtAutogen main.cpp calwidget.cpp second_widget.cpp foo.cpp blub.c
 )
 set_property(TARGET QtAutogen APPEND PROPERTY AUTOGEN_TARGET_DEPENDS generate_moc_input "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h")
 
-set_target_properties(QtAutogen codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
+add_executable(targetObjectsTest targetObjectsTest.cpp $<TARGET_OBJECTS:privateSlot>)
+target_link_libraries(targetObjectsTest ${QT_LIBRARIES})
+
+set_target_properties(
+  QtAutogen codeeditorLib privateSlot targetObjectsTest
+  PROPERTIES
+  AUTOMOC TRUE
+)
 
 include(GenerateExportHeader)
 # The order is relevant here. B depends on A, and B headers depend on A

+ 5 - 0
Tests/QtAutogen/targetObjectsTest.cpp

@@ -0,0 +1,5 @@
+
+int main()
+{
+  return 0;
+}