summaryrefslogtreecommitdiffstats
path: root/tests/auto/cmake/test_qt_manual_moc/CMakeLists.txt
blob: 513995c4cf9cca36fca0e4e1e901f2e9507dcb21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
)