Răsfoiți Sursa

Merge branch 'fix-AUTOGEN-custom-command-depends' into release

Brad King 11 ani în urmă
părinte
comite
ebaa5a6410

+ 12 - 0
Source/cmQtAutoGenerators.cxx

@@ -260,6 +260,18 @@ bool cmQtAutoGenerators::InitializeAutogenTarget(cmTarget* target)
     // This also works around a VS 11 bug that may skip updating the target:
     //  https://connect.microsoft.com/VisualStudio/feedback/details/769495
     usePRE_BUILD = vslg->GetVersion() >= cmLocalVisualStudioGenerator::VS7;
+    if(usePRE_BUILD)
+      {
+      for (std::vector<std::string>::iterator it = depends.begin();
+            it != depends.end(); ++it)
+        {
+        if(!makefile->FindTargetToUse(it->c_str()))
+          {
+          usePRE_BUILD = false;
+          break;
+          }
+        }
+      }
     }
   if(usePRE_BUILD)
     {

+ 7 - 1
Tests/QtAutogen/CMakeLists.txt

@@ -58,11 +58,17 @@ add_custom_target(generate_moc_input
   COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myinterface.h"
 )
 
+add_custom_command(
+  OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h"
+  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in" "${CMAKE_CURRENT_BINARY_DIR}/myotherinterface.h"
+  DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myotherinterface.h.in"
+)
+
 add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
                xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
                test.qrc resourcetester.cpp generated.cpp
 )
-set_property(TARGET QtAutogen APPEND PROPERTY AUTOGEN_TARGET_DEPENDS generate_moc_input)
+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)
 

+ 3 - 2
Tests/QtAutogen/generated.h

@@ -5,11 +5,12 @@
 #include <QObject>
 
 #include "myinterface.h"
+#include "myotherinterface.h"
 
-class Generated : public QObject, MyInterface
+class Generated : public QObject, MyInterface, MyOtherInterface
 {
   Q_OBJECT
-  Q_INTERFACES(MyInterface)
+  Q_INTERFACES(MyInterface MyOtherInterface)
 public:
   explicit Generated(QObject *parent = 0);
 };

+ 14 - 0
Tests/QtAutogen/myotherinterface.h.in

@@ -0,0 +1,14 @@
+
+#ifndef MYOTHERINTERFACE_H
+#define MYOTHERINTERFACE_H
+
+#include <QObject>
+
+class MyOtherInterface
+{
+
+};
+
+Q_DECLARE_INTERFACE(MyOtherInterface, "org.cmake.example.MyOtherInterface")
+
+#endif