summaryrefslogtreecommitdiffstats
path: root/tests/auto/tools/moc/CMakeLists.txt
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-04-27 16:25:20 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2020-08-10 12:59:46 +0200
commit7b3a2f5e3d5f496036c4ea7e2fa3778fce848e57 (patch)
treeed8df3e6e738297df79877381489897334cd3c35 /tests/auto/tools/moc/CMakeLists.txt
parent3e09c28101d1af1dd90a4b515d7edbe5a3737f97 (diff)
cmake support for tst_moc
We use qt_wrap_cpp instead of AUTOMOC so that we can easily find the json files. Getting autorcc to run only after json file has been generated was deemed too tricky. Therefore the test is slightly modified to check for the json files in its directory instead of the resource, if the qrc file does not exist. Change-Id: Id1aabb117c8bab3ff81156da1f66d64e796bf18b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'tests/auto/tools/moc/CMakeLists.txt')
-rw-r--r--tests/auto/tools/moc/CMakeLists.txt144
1 files changed, 144 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/CMakeLists.txt b/tests/auto/tools/moc/CMakeLists.txt
new file mode 100644
index 0000000000..db953ab735
--- /dev/null
+++ b/tests/auto/tools/moc/CMakeLists.txt
@@ -0,0 +1,144 @@
+# special case skip regeneration
+# Generated from moc.pro.
+
+#####################################################################
+## tst_moc Test:
+#####################################################################
+
+
+set(JSON_HEADERS
+ backslash-newlines.h
+ c-comments.h
+ cstyle-enums.h
+ cxx11-enums.h
+ cxx11-explicit-override-control.h
+ cxx11-final-classes.h
+ cxx17-namespaces.h
+ dir-in-include-path.h
+ escapes-in-string-literals.h
+ enum_with_include.h
+ forward-declared-param.h
+ function-with-attributes.h
+ gadgetwithnoenums.h
+ grand-parent-gadget-class.h
+ moc_include.h
+ namespace.h
+ namespaced-flags.h
+ no-keywords.h
+ non-gadget-parent-class.h
+ oldstyle-casts.h
+ parse-defines.h
+ plugin_metadata.h
+ pointery_to_incomplete.h
+ pure-virtual-signals.h
+ qinvokable.h
+ qprivateslots.h
+ qtbug-35657-gadget.h
+ related-metaobjects-in-gadget.h
+ related-metaobjects-in-namespaces.h
+ related-metaobjects-name-conflict.h
+ single-quote-digit-separator-n3781.h
+ single_function_keyword.h
+ slots-with-void-template.h
+ task192552.h
+ task234909.h
+ task240368.h
+ task87883.h
+ trigraphs.h
+ using-namespaces.h
+)
+
+qt_wrap_cpp(comparison_relevant_moc_list ${JSON_HEADERS}
+ TARGET tst_moc
+ OPTIONS
+ "-Muri=com.company.app"
+ "-Muri=com.company.app.private"
+ "-DDEFINE_CMDLINE_EMPTY="
+ "-DDEFINE_CMDLINE_SIGNAL=void cmdlineSignal(const QMap<int, int> &i)"
+ "--output-json"
+)
+
+list(TRANSFORM comparison_relevant_moc_list APPEND ".json" OUTPUT_VARIABLE moc_json_files)
+
+qt_add_test(tst_moc
+ SOURCES
+ cxx-attributes.h
+ tst_moc.cpp
+ ${comparison_relevant_moc_list}
+ INCLUDE_DIRECTORIES
+ testproject
+ testproject/include
+ MOC_OPTIONS
+ "-Muri=com.company.app"
+ "-Muri=com.company.app.private"
+ "-DDEFINE_CMDLINE_EMPTY="
+ "-DDEFINE_CMDLINE_SIGNAL=void cmdlineSignal(const QMap<int, int> &i)"
+ "--output-json"
+ EXCEPTIONS
+)
+
+qt_extend_target(tst_moc PUBLIC_LIBRARIES Qt::CorePrivate)
+
+qt_extend_target(tst_moc CONDITION CMAKE_CROSSCOMPILING
+ DEFINES
+ MOC_CROSS_COMPILED
+)
+
+if (UNIX AND (CLANG OR GCC OR ICC))
+ qt_wrap_cpp(os9_moc os9-newlines.h)
+endif()
+
+qt_extend_target(tst_moc CONDITION UNIX AND (CLANG OR GCC OR ICC)
+ SOURCES
+ os9-newlines.h
+ win-newlines.h
+ ${os9_moc}
+)
+
+qt_extend_target(tst_moc CONDITION CLANG OR GCC
+ SOURCES
+ dollars.h
+)
+
+qt_extend_target(tst_moc CONDITION TARGET Qt::DBus
+ PUBLIC_LIBRARIES
+ Qt::DBus
+)
+
+qt_extend_target(tst_moc CONDITION TARGET Qt::Concurrent
+ PUBLIC_LIBRARIES
+ Qt::Concurrent
+)
+
+qt_extend_target(tst_moc CONDITION TARGET Qt::Network
+ PUBLIC_LIBRARIES
+ Qt::Network
+)
+
+qt_extend_target(tst_moc CONDITION TARGET Qt::Sql
+ PUBLIC_LIBRARIES
+ Qt::Sql
+)
+
+get_target_property(target_binary_dir tst_moc BINARY_DIR)
+set(cmake_autogen_cache_file
+ "${target_binary_dir}/CMakeFiles/tst_moc_autogen.dir/ParseCache.txt")
+set(cmake_autogen_info_file
+ "${target_binary_dir}/CMakeFiles/tst_moc_autogen.dir/AutogenInfo.json")
+set(moc_json_out ${target_binary_dir}/moc_json_out)
+
+file(REMOVE ${moc_json_out})
+foreach(filename ${moc_json_files})
+ file(APPEND ${moc_json_out} "${filename}\n")
+endforeach()
+
+set(metatype_file "allmocs.json")
+configure_file("allmocs_baseline_in.json" "${target_binary_dir}/allmocs_baseline.json")
+
+add_custom_command(TARGET tst_moc
+ POST_BUILD
+ COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::moc
+ -o "allmocs.json"
+ --collect-json "@${moc_json_out}"
+ COMMENT "Running moc with --collect-json"
+)