qt5base-lts/tests/auto/tools/moc/CMakeLists.txt
Fabian Kosmale 7b3a2f5e3d 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>
2020-08-10 12:59:46 +02:00

145 lines
3.7 KiB
CMake

# 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"
)