summaryrefslogtreecommitdiffstats
path: root/tests/manual/loading_benchmark/CMakeLists.txt
blob: f2beb3072282cd8a23977130b4e49be81ceedf94 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
cmake_minimum_required(VERSION 3.16)

project(loading_benchmark VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt6 REQUIRED COMPONENTS Quick InterfaceFramework)
qt_policy(SET QTP0001 NEW)

qt_standard_project_setup()

set(INTERFACES 40)
set(PROPERTIES 100)

set(QFACE_CONTENT
"module Benchmark 1.0;

struct TestStruct {
    real value
    real value2
    real value3
    string string1
    string string2
    string string3
    bool condition
    bool condition2
    bool condition3
}

"
)
foreach(i RANGE ${INTERFACES})
    string(APPEND QFACE_CONTENT "interface Interface${i} {\n")
    foreach(j RANGE ${PROPERTIES})
        string(APPEND QFACE_CONTENT "   TestStruct prop${j}\n")
    endforeach()
    string(APPEND QFACE_CONTENT "}\n")
endforeach()

file(CONFIGURE OUTPUT benchmark.qface CONTENT "${QFACE_CONTENT}")

qt6_add_library(loading_benchmark_frontend)

# Interface Framework Generator:
qt6_ifcodegen_extend_target(loading_benchmark_frontend
    IDL_FILES ${CMAKE_CURRENT_BINARY_DIR}/benchmark.qface
    TEMPLATE frontend
)

####### BACKEND #######

qt_add_plugin(loading_benchmark_simulator)
set_target_properties(loading_benchmark_simulator PROPERTIES LIBRARY_OUTPUT_DIRECTORY interfaceframework)

# Interface Framework Generator:
qt6_ifcodegen_extend_target(loading_benchmark_simulator
    IDL_FILES ${CMAKE_CURRENT_BINARY_DIR}/benchmark.qface
    TEMPLATE backend_simulator
)

target_link_libraries(loading_benchmark_simulator PUBLIC
    loading_benchmark_frontend
)

qt_add_plugin(loading_benchmark_qtro)
set_target_properties(loading_benchmark_qtro PROPERTIES LIBRARY_OUTPUT_DIRECTORY interfaceframework)

# Interface Framework Generator:
qt6_ifcodegen_extend_target(loading_benchmark_qtro
    IDL_FILES ${CMAKE_CURRENT_BINARY_DIR}/benchmark.qface
    TEMPLATE backend_qtro
)

target_link_libraries(loading_benchmark_qtro PUBLIC
    loading_benchmark_frontend
)

##### BENCHMARK #####

qt_add_executable(loading_benchmark
    main.cpp
)

qt_add_qml_module(loading_benchmark
    URI benchmark
    VERSION 1.0
    QML_FILES main.qml
)

target_link_libraries(loading_benchmark
    PRIVATE
        loading_benchmark_frontend
        Qt6::Quick
)

install(TARGETS loading_benchmark
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

install(TARGETS loading_benchmark_frontend
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

install(TARGETS loading_benchmark_qtro
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}/interfaceframework"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
    LIBRARY DESTINATION "/usr/bin/interfaceframework"
)