summaryrefslogtreecommitdiffstats
path: root/tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt')
-rw-r--r--tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt b/tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt
new file mode 100644
index 0000000000..513995c4cf
--- /dev/null
+++ b/tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt
@@ -0,0 +1,61 @@
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.16)
+
+find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core)
+
+set(CMAKE_AUTOMOC FALSE)
+
+qt_manual_moc(moc_files testclass.h
+ DEFINITIONS
+ -DMY_FIRST_DEF
+ MY_SECOND_DEF
+ -DMY_THIRD_DEF=1
+ MY_FOURTH_DEF=1
+)
+
+add_custom_target(verify_testclass ALL COMMAND ${CMAKE_COMMAND}
+ "-DMOC_ARGS=moc_testclass.cpp_parameters$<$<BOOL:$<CONFIG>>:_$<CONFIG>>"
+ "-DDEFINITIONS=MY_FIRST_DEF;MY_SECOND_DEF;MY_THIRD_DEF=1;MY_FOURTH_DEF=1"
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/VerifyDefines.cmake"
+ VERBATIM
+)
+
+add_library(MyInterfaceLib INTERFACE)
+target_compile_definitions(MyInterfaceLib INTERFACE -DMY_TRANSITIVE_DEF=1)
+
+add_library(MyLib SHARED testclass1.h testclass.cpp)
+target_link_libraries(MyLib PRIVATE Qt6::Core MyInterfaceLib)
+target_compile_definitions(MyLib PRIVATE
+ -DMY_FIRST_DEF
+ MY_SECOND_DEF
+ -DMY_THIRD_DEF=1
+ MY_FOURTH_DEF=1
+)
+
+add_library(MyLib2 SHARED testclass1.h testclass.cpp)
+target_link_libraries(MyLib2 PRIVATE Qt6::Core)
+target_compile_definitions(MyLib2 PRIVATE
+ -DMY_FOREIGN_DEF
+)
+
+qt_manual_moc(moc_files testclass1.h TARGETS MyLib MyLib2)
+target_sources(MyLib PRIVATE ${moc_files})
+target_sources(MyLib2 PRIVATE ${moc_files})
+
+string(JOIN ";" expected
+ "MY_FIRST_DEF"
+ "MY_SECOND_DEF"
+ "MY_THIRD_DEF=1"
+ "MY_FOURTH_DEF=1"
+ "MY_TRANSITIVE_DEF=1"
+ "MY_FOREIGN_DEF"
+)
+
+add_custom_target(verify_testclass1 ALL COMMAND ${CMAKE_COMMAND}
+ "-DMOC_ARGS=moc_testclass1.cpp_parameters$<$<BOOL:$<CONFIG>>:_$<CONFIG>>"
+ "-DDEFINITIONS=${expected}"
+ -P "${CMAKE_CURRENT_SOURCE_DIR}/VerifyDefines.cmake"
+ VERBATIM
+)