Browse Source

Autogen: Add test for OBJECT libraries

Sebastian Holtermann 8 years ago
parent
commit
15ef27286a

+ 4 - 0
Tests/QtAutogen/CMakeLists.txt

@@ -192,6 +192,10 @@ endif()
 # Tests various .ui include directories
 add_subdirectory(uicInclude)
 
+# -- Test
+# OBJECT libraries
+add_subdirectory(objectLibrary)
+
 # -- Test
 # Complex test case
 add_subdirectory(complex)

+ 14 - 0
Tests/QtAutogen/objectLibrary/CMakeLists.txt

@@ -0,0 +1,14 @@
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC ON)
+
+# Object library a defined in a subdirectory
+add_subdirectory(a)
+
+# Object library b defined locally
+include_directories(b)
+add_library(b OBJECT b/classb.cpp)
+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})

+ 2 - 0
Tests/QtAutogen/objectLibrary/a/CMakeLists.txt

@@ -0,0 +1,2 @@
+add_library(a OBJECT classa.cpp)
+target_compile_features(a PRIVATE ${QT_COMPILE_FEATURES})

+ 7 - 0
Tests/QtAutogen/objectLibrary/a/classa.cpp

@@ -0,0 +1,7 @@
+#include "classa.h"
+#include <QDebug>
+
+void ClassA::slotDoSomething()
+{
+  qDebug() << m_member;
+}

+ 23 - 0
Tests/QtAutogen/objectLibrary/a/classa.h

@@ -0,0 +1,23 @@
+#ifndef CLASSA_H
+#define CLASSA_H
+
+#include <QObject>
+#include <QString>
+
+class ClassA : public QObject
+{
+  Q_OBJECT
+public:
+  ClassA()
+    : m_member("Hello A")
+  {
+  }
+
+public slots:
+  void slotDoSomething();
+
+private:
+  QString m_member;
+};
+
+#endif

+ 7 - 0
Tests/QtAutogen/objectLibrary/b/classb.cpp

@@ -0,0 +1,7 @@
+#include "classb.h"
+#include <QDebug>
+
+void ClassB::slotDoSomething()
+{
+  qDebug() << m_member;
+}

+ 23 - 0
Tests/QtAutogen/objectLibrary/b/classb.h

@@ -0,0 +1,23 @@
+#ifndef CLASSB_H
+#define CLASSB_H
+
+#include <QObject>
+#include <QString>
+
+class ClassB : public QObject
+{
+  Q_OBJECT
+public:
+  ClassB()
+    : m_member("Hello B")
+  {
+  }
+
+public slots:
+  void slotDoSomething();
+
+private:
+  QString m_member;
+};
+
+#endif

+ 13 - 0
Tests/QtAutogen/objectLibrary/main.cpp

@@ -0,0 +1,13 @@
+#include "a/classa.h"
+#include "b/classb.h"
+
+int main(int argc, char** argv)
+{
+  ClassA a;
+  a.slotDoSomething();
+
+  ClassB b;
+  b.slotDoSomething();
+
+  return 0;
+}