summaryrefslogtreecommitdiffstats
path: root/examples/interfaceframework/remote/CMakeLists.txt
blob: 0739608feb0e65bb69523ef4382293a277bc1bcf (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
114
115
cmake_minimum_required(VERSION 3.16)
project(remote LANGUAGES CXX)

if(NOT DEFINED INSTALL_EXAMPLESDIR)
    set(INSTALL_EXAMPLESDIR "examples")
endif()

set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/interfaceframework/remote")

find_package(Qt6 REQUIRED COMPONENTS InterfaceFramework Quick)

qt_standard_project_setup(REQUIRES 6.7)

## Application ##

qt_add_executable(remote WIN32
    main.cpp
)

qt_add_qml_module(remote
    URI Example
    QML_FILES
        Main.qml
)

target_link_libraries(remote PRIVATE
    remote_frontend
    Qt::Quick
)

## Frontend ##

#! [0]
qt_ifcodegen_add_qml_module(remote_frontend
    IDL_FILES example-remote.qface
    TEMPLATE frontend
)
#! [0]

## Backend ##

#! [1]
qt_ifcodegen_add_plugin(remote_backend_qtro
    IDL_FILES example-remote.qface
    TEMPLATE backend_qtro
)
#! [1]

#! [3]
set_target_properties(remote_backend_qtro PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY interfaceframework
)
#! [3]

#! [2]
target_link_libraries(remote_backend_qtro PRIVATE
    remote_frontend
)
#! [2]

## Server ##

#! [4]
qt_add_executable(remote-server WIN32
    server/serverMain.cpp
    server/processingservice.h
    server/processingservice.cpp
)

qt_ifcodegen_extend_target(remote-server
    IDL_FILES example-remote.qface
    TEMPLATE server_qtro
)

target_link_libraries(remote-server PRIVATE
    remote_frontend
)
#! [4]

set_property(TARGET remote APPEND PROPERTY QT_ANDROID_EXTRA_PLUGINS
    "${CMAKE_CURRENT_BINARY_DIR}/interfaceframework"
)
set(QT_USE_TARGET_ANDROID_BUILD_DIR TRUE CACHE BOOL
    "Support multiple apk targets in one folder")

install(TARGETS remote remote_frontend remote-server
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

install(TARGETS remote_backend_qtro
    RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}/interfaceframework"
    BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}/interfaceframework"
    LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}/interfaceframework"
)

if (TARGET remote_frontendplugin)
    set_target_properties(remote_frontendplugin
        PROPERTIES
            INSTALL_RPATH "$ORIGIN/../../../"
    )

    install(
        TARGETS remote_frontendplugin
        LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}/Example/If/RemoteModule"
        RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}/Example/If/RemoteModule"
        BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}/Example/If/RemoteModule"
    )
endif()

install(
    FILES ${CMAKE_CURRENT_BINARY_DIR}/Example/If/RemoteModule/qmldir
    DESTINATION "${INSTALL_EXAMPLEDIR}/Example/If/RemoteModule"
)