File: CMakeLists.txt

package info (click to toggle)
quickflux 1.1.3%2Bgit20201110.2a37acf-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,036 kB
  • sloc: cpp: 2,874; makefile: 26
file content (196 lines) | stat: -rw-r--r-- 5,450 bytes parent folder | download
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#
# To build it with cmake, you should register qml types explicitly by calling registerQuickFluxQmlTypes() in your main.cpp
# See examples/middleware for example
#

cmake_minimum_required(VERSION 3.0.0)
project(quickflux VERSION 1.1.3)

set(CMAKE_AUTOMOC TRUE)

option(quickflux_INSTALL "Enable the installation of targets." ON)
option(BUILD_QML_MODULE "Build QML module" OFF)
if(MSVC)
  set_property (GLOBAL PROPERTY USE_FOLDERS ON)
endif()

set(SRC_DIR "${PROJECT_SOURCE_DIR}/src")

include(GNUInstallDirs)
find_package(Qt5 COMPONENTS Core Quick Qml Gui CONFIG REQUIRED)

set(quickflux_PRIVATE_SOURCES
  ${SRC_DIR}/priv/qfhook.cpp
  ${SRC_DIR}/priv/qfmiddlewareshook.cpp
  ${SRC_DIR}/priv/qfsignalproxy.cpp
  ${SRC_DIR}/priv/quickfluxfunctions.cpp
  )

set(quickflux_PUBLIC_SOURCES
  ${SRC_DIR}/qfactioncreator.cpp
  ${SRC_DIR}/qfappdispatcher.cpp
  ${SRC_DIR}/qfapplistener.cpp
  ${SRC_DIR}/qfapplistenergroup.cpp
  ${SRC_DIR}/qfappscript.cpp
  ${SRC_DIR}/qfappscriptdispatcherwrapper.cpp
  ${SRC_DIR}/qfappscriptgroup.cpp
  ${SRC_DIR}/qfappscriptrunnable.cpp
  ${SRC_DIR}/qfdispatcher.cpp
  ${SRC_DIR}/qffilter.cpp
  ${SRC_DIR}/qfhydrate.cpp
  ${SRC_DIR}/qfkeytable.cpp
  ${SRC_DIR}/qflistener.cpp
  ${SRC_DIR}/qfmiddleware.cpp
  ${SRC_DIR}/qfmiddlewarelist.cpp
  ${SRC_DIR}/qfobject.cpp
  ${SRC_DIR}/qfqmltypes.cpp
  ${SRC_DIR}/qfstore.cpp
  )

set(quickflux_PRIVATE_HEADERS
  ${SRC_DIR}/priv/qfappscriptdispatcherwrapper.h
  ${SRC_DIR}/priv/qfappscriptrunnable.h
  ${SRC_DIR}/priv/qfhook.h
  ${SRC_DIR}/priv/qflistener.h
  ${SRC_DIR}/priv/qfmiddlewareshook.h
  ${SRC_DIR}/priv/qfsignalproxy.h
  ${SRC_DIR}/priv/quickfluxfunctions.h
  )

set(quickflux_PUBLIC_HEADERS
  ${SRC_DIR}/qfactioncreator.h
  ${SRC_DIR}/QFAppDispatcher
  ${SRC_DIR}/qfapplistener.h
  ${SRC_DIR}/qfapplistenergroup.h
  ${SRC_DIR}/qfappscript.h
  ${SRC_DIR}/qfappdispatcher.h
  ${SRC_DIR}/qfappscriptgroup.h
  ${SRC_DIR}/qfdispatcher.h
  ${SRC_DIR}/qffilter.h
  ${SRC_DIR}/qfhydrate.h
  ${SRC_DIR}/QFKeyTable
  ${SRC_DIR}/qfkeytable.h
  ${SRC_DIR}/qfmiddleware.h
  ${SRC_DIR}/qfmiddlewarelist.h
  ${SRC_DIR}/qfobject.h
  ${SRC_DIR}/qfstore.h
  ${SRC_DIR}/QuickFlux
  )

source_group(include FILES
  ${quickflux_PRIVATE_HEADERS}
  ${quickflux_PUBLIC_HEADERS}
  )

if(MSVC)
  source_group("Source Files" FILES ${quickflux_PUBLIC_SOURCES})
  source_group("Source Files\\Private" FILES ${quickflux_PRIVATE_SOURCES})
  source_group("Header Files" FILES ${quickflux_PUBLIC_HEADERS})
  source_group("Header Files\\Private" FILES ${quickflux_PRIVATE_HEADERS})
  source_group("Source Files\\MOC" REGULAR_EXPRESSION "moc*")
endif()

add_library(quickflux STATIC
  ${quickflux_PRIVATE_SOURCES}
  ${quickflux_PRIVATE_HEADERS}
  ${quickflux_PUBLIC_SOURCES}
  ${quickflux_PUBLIC_HEADERS}
  ${moc}
  )
add_library(QuickFlux::quickflux ALIAS quickflux)

target_compile_definitions(quickflux PUBLIC
    QUICK_FLUX_DISABLE_AUTO_QML_REGISTER
)

target_link_libraries(quickflux
  PUBLIC
  Qt5::Qml
  Qt5::Quick
  Qt5::Core
  )

target_include_directories(quickflux
  PUBLIC
  "$<BUILD_INTERFACE:${SRC_DIR}>"
  "$<INSTALL_INTERFACE:include/quickflux>"
  )

set_target_properties(quickflux PROPERTIES
  AUTOMOC TRUE
  DEBUG_POSTFIX d
  )

if(quickflux_INSTALL)

  install(TARGETS quickflux EXPORT QuickFluxTargets
    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
    INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/quickflux"
    )

  install(FILES
    ${quickflux_PUBLIC_HEADERS}
    DESTINATION include/quickflux
    )
  install(FILES
    ${quickflux_PRIVATE_HEADERS}
    DESTINATION include/quickflux/priv
    )


  include(CMakePackageConfigHelpers)
  write_basic_package_version_file(
      ${CMAKE_BINARY_DIR}/cmake/QuickFluxVersion.cmake
      VERSION ${PROJECT_VERSION}
      COMPATIBILITY SameMajorVersion
  )

  # installation - build tree specific package config files
  export(EXPORT QuickFluxTargets FILE ${CMAKE_BINARY_DIR}/QuickFluxTargets.cmake)
  configure_file(${PROJECT_SOURCE_DIR}/QuickFluxConfig.cmake.in
      ${CMAKE_BINARY_DIR}/QuickFluxConfig.cmake
      COPYONLY
  )

  # installation - relocatable package config files
  configure_package_config_file(${PROJECT_SOURCE_DIR}/QuickFluxConfig.cmake.in
                                ${CMAKE_CURRENT_BINARY_DIR}/cmake/QuickFluxConfig.cmake
                                INSTALL_DESTINATION cmake
  )

  set(CONFIG_PACKAGE_LOCATION ${CMAKE_INSTALL_LIBDIR}/cmake/QuickFlux)

  install(EXPORT QuickFluxTargets
      FILE QuickFluxTargets.cmake
      NAMESPACE QuickFlux::
      DESTINATION ${CONFIG_PACKAGE_LOCATION}
  )

  install(FILES
      ${CMAKE_BINARY_DIR}/cmake/QuickFluxConfig.cmake
      ${CMAKE_BINARY_DIR}/cmake/QuickFluxVersion.cmake
      DESTINATION ${CONFIG_PACKAGE_LOCATION}
  )

  if(BUILD_QML_MODULE)
    # Qt5's cmake does not export QT_IMPORTS_DIR, lets query qmake on our own for now
    get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
    function(QUERY_QMAKE VAR RESULT)
      execute_process(
        COMMAND ${QMAKE_EXECUTABLE} -query "${VAR}"
        RESULT_VARIABLE return_code
        OUTPUT_VARIABLE output
        OUTPUT_STRIP_TRAILING_WHITESPACE
      )
      if(NOT return_code)
        file(TO_CMAKE_PATH "${output}" output)
        set(${RESULT} ${output} PARENT_SCOPE)
      endif(NOT return_code)
    endfunction(QUERY_QMAKE)

    add_subdirectory(qml)
  endif()

endif()