[Cmake-commits] CMake branch, next, updated. v2.8.10.2-2283-g69e7768

Brad King brad.king at kitware.com
Fri Feb 22 08:30:23 EST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  69e77686669ac1b5b8bfe1cf57f7e3f3b988a63c (commit)
       via  79568f95ab920158fdcb857c9b99592ad5300a4e (commit)
      from  815d8a91290f8c7d4b886312cc73ef43478528e5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=69e77686669ac1b5b8bfe1cf57f7e3f3b988a63c
commit 69e77686669ac1b5b8bfe1cf57f7e3f3b988a63c
Merge: 815d8a9 79568f9
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Feb 22 08:30:19 2013 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Feb 22 08:30:19 2013 -0500

    Merge topic 'fix-automoc-linker-language' into next
    
    79568f9 automoc: Add source file to target early to set the linker language


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=79568f95ab920158fdcb857c9b99592ad5300a4e
commit 79568f95ab920158fdcb857c9b99592ad5300a4e
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Feb 20 17:06:45 2013 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Feb 22 08:29:33 2013 -0500

    automoc: Add source file to target early to set the linker language
    
    Previously, GetIncludeDirectories was called before calling
    target->AddSourceFile(mocCppSource). Since commit a1c4905f (Use the
    link information as a source of compile definitions and
    includes., 2013-02-12), the include directories are determined by
    the link information.
    
    Valid link information requires that the linker language can be
    determined, which depends on the source files languages and the
    dependent targets languages. In the case of the no_link_languages
    target in the unit test, there are no dependencies and the additional
    source file no_link_languages_automoc.cpp is added to the target
    at generate-time. That file can be used to determine the linker
    language, but it must be added to the target before calling
    GetIncludeDirectories.

diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index ba29589..f2defbb 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1067,6 +1067,8 @@ bool cmGlobalGenerator::CheckTargets()
 void cmGlobalGenerator::CreateAutomocTargets()
 {
 #ifdef CMAKE_BUILD_WITH_CMAKE
+  typedef std::vector<std::pair<cmQtAutomoc, cmTarget*> > Automocs;
+  Automocs automocs;
   for(unsigned int i=0; i < this->LocalGenerators.size(); ++i)
     {
     cmTargets& targets =
@@ -1084,11 +1086,17 @@ void cmGlobalGenerator::CreateAutomocTargets()
         if(target.GetPropertyAsBool("AUTOMOC") && !target.IsImported())
           {
           cmQtAutomoc automoc;
-          automoc.SetupAutomocTarget(&target);
+          automoc.InitializeMocSourceFile(&target);
+          automocs.push_back(std::make_pair(automoc, &target));
           }
         }
       }
     }
+  for (Automocs::iterator it = automocs.begin(); it != automocs.end();
+       ++it)
+    {
+    it->first.SetupAutomocTarget(it->second);
+    }
 #endif
 }
 
diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx
index 4818f1b..10ce641 100644
--- a/Source/cmQtAutomoc.cxx
+++ b/Source/cmQtAutomoc.cxx
@@ -119,6 +119,22 @@ cmQtAutomoc::cmQtAutomoc()
     }
 }
 
+void cmQtAutomoc::InitializeMocSourceFile(cmTarget* target)
+{
+  std::string automocTargetName = target->GetName();
+  cmMakefile *makefile = target->GetMakefile();
+  automocTargetName += "_automoc";
+  std::string mocCppFile = makefile->GetCurrentOutputDirectory();
+  mocCppFile += "/";
+  mocCppFile += automocTargetName;
+  mocCppFile += ".cpp";
+  cmSourceFile* mocCppSource = makefile->GetOrCreateSource(mocCppFile.c_str(),
+                                                         true);
+  makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES",
+                           mocCppFile.c_str(), false);
+
+  target->AddSourceFile(mocCppSource);
+}
 
 void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
 {
@@ -268,17 +284,6 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
   outputFile += "/AutomocInfo.cmake";
   makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
                           false, true, false);
-
-  std::string mocCppFile =  makefile->GetCurrentOutputDirectory();
-  mocCppFile += "/";
-  mocCppFile += automocTargetName;
-  mocCppFile += ".cpp";
-  cmSourceFile* mocCppSource = makefile->GetOrCreateSource(mocCppFile.c_str(),
-                                                         true);
-  target->AddSourceFile(mocCppSource);
-
-  makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES",
-                           mocCppFile.c_str(), false);
 }
 
 
diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutomoc.h
index 69da80e..962e254 100644
--- a/Source/cmQtAutomoc.h
+++ b/Source/cmQtAutomoc.h
@@ -23,6 +23,7 @@ public:
   cmQtAutomoc();
   bool Run(const char* targetDirectory);
 
+  void InitializeMocSourceFile(cmTarget* target);
   void SetupAutomocTarget(cmTarget* target);
 
 private:
diff --git a/Tests/QtAutomoc/CMakeLists.txt b/Tests/QtAutomoc/CMakeLists.txt
index 530818e..ebfbb03 100644
--- a/Tests/QtAutomoc/CMakeLists.txt
+++ b/Tests/QtAutomoc/CMakeLists.txt
@@ -38,3 +38,9 @@ generate_export_header(libC)
 target_link_libraries(libC LINK_PUBLIC libB)
 
 target_link_libraries(foo codeeditorLib ${QT_LIBRARIES} libC)
+
+add_library(empty STATIC empty.cpp)
+set_target_properties(empty PROPERTIES AUTOMOC TRUE)
+target_link_libraries(empty no_link_language)
+add_library(no_link_language STATIC empty.h)
+set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE)
diff --git a/Tests/QtAutomoc/empty.cpp b/Tests/QtAutomoc/empty.cpp
new file mode 100644
index 0000000..ab32cf6
--- /dev/null
+++ b/Tests/QtAutomoc/empty.cpp
@@ -0,0 +1 @@
+// No content
diff --git a/Tests/QtAutomoc/empty.h b/Tests/QtAutomoc/empty.h
new file mode 100644
index 0000000..4566142
--- /dev/null
+++ b/Tests/QtAutomoc/empty.h
@@ -0,0 +1,9 @@
+
+#include <QObject>
+
+class Empty : public QObject
+{
+  Q_OBJECT
+public:
+  explicit Empty(QObject *parent = 0) {}
+};

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list