-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
162 lines (140 loc) · 5.39 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.0.0)
project(kaltracker C CXX)
# Automatically create moc files
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
set(CMAKE_CXX_STANDARD 14)
find_package(Qt5Core REQUIRED)
find_package(Qt5Qml REQUIRED)
find_package(Qt5Quick REQUIRED)
find_package(Qt5QuickControls2 REQUIRED)
find_package(Qt5Multimedia REQUIRED)
find_package(Qt5Network)
execute_process(
COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
OUTPUT_VARIABLE ARCH_TRIPLET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(QT_IMPORTS_DIR "lib/${ARCH_TRIPLET}")
set(PROJECT_NAME "kaltracker")
set(FULL_PROJECT_NAME "kaltracker.ivoxavier")
set(DATA_DIR /)
set(DESKTOP_FILE_NAME ${PROJECT_NAME}.desktop)
# This command figures out the minimum SDK framework for use in the manifest
# file via the environment variable provided by Clickable or sets a default value otherwise.
if(DEFINED ENV{SDK_FRAMEWORK})
set(CLICK_FRAMEWORK "$ENV{SDK_FRAMEWORK}")
else()
set(CLICK_FRAMEWORK "ubuntu-sdk-20.04")
endif()
# This figures out the target architecture for use in the manifest file.
if(DEFINED ENV{ARCH})
set(CLICK_ARCH "$ENV{ARCH}")
else()
execute_process(
COMMAND dpkg-architecture -qDEB_HOST_ARCH
OUTPUT_VARIABLE CLICK_ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
set(QZXING_MULTIMEDIA ON)
set(QZXING_USE_QML ON)
add_definitions(
-DENABLE_ENCODER_GENERIC
-DQZXING_QML
-DQZXING_MULTIMEDIA
-DQZXING_LIBRARY
-DZXING_ICONV_CONST
-DDISABLE_LIBRARY_FEATURES
-DENABLE_DECODER_1D_BARCODES
)
add_subdirectory(qzxing/src)
include_directories(qzxing/src/zxing)
include_directories("${PROJECT_BINARY_DIR}")
set(SOURCES main.cpp
internetchecker/internetchecker.cpp)
# Sets BUILD_VERSION: tag of the current git HEAD or devel build
execute_process(
COMMAND git describe --tags --abbrev=0
OUTPUT_VARIABLE BUILD_VERSION_RAW
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(NOT BUILD_VERSION_RAW)
execute_process(
COMMAND git describe --tags --abbrev=0
OUTPUT_VARIABLE LAST_VERSION_RAW
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
execute_process(
COMMAND git rev-parse --short HEAD
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
string(TIMESTAMP BUILD_VERSION_RAW "${LAST_VERSION_RAW}.%y%m%d%H%M%S" UTC)
message(STATUS "Development build. Git hash is: ${GIT_HASH}")
endif(NOT BUILD_VERSION_RAW)
string(SUBSTRING ${BUILD_VERSION_RAW} 1 -1 BUILD_VERSION)
configure_file(git_tag.h.in ${CMAKE_CURRENT_BINARY_DIR}/git_tag.h)
message(STATUS "Build version is: ${BUILD_VERSION}")
configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION ${CMAKE_INSTALL_PREFIX})
install(FILES ${PROJECT_NAME}.apparmor DESTINATION ${DATA_DIR})
install(FILES assets/logo.svg DESTINATION assets)
install(FILES pushexec PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ DESTINATION ${DATA_DIR})
install(FILES push.json DESTINATION ${DATA_DIR})
install(FILES push-apparmor.json DESTINATION ${DATA_DIR})
add_executable(${PROJECT_NAME} ${SOURCES} ${QT_RESOURCES})
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE -s)
target_link_libraries(${PROJECT_NAME} Qt5::Gui Qt5::Qml Qt5::Quick Qt5::QuickControls2)
target_link_libraries(${PROJECT_NAME} qzxing)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
#set directories
install(DIRECTORY "assets" DESTINATION .)
install(DIRECTORY "qml" DESTINATION .)
install(DIRECTORY "qml/pages" DESTINATION /qml)
install(DIRECTORY "qml/components" DESTINATION /qml)
install(DIRECTORY "qml/style" DESTINATION /qml)
install(DIRECTORY "qml/plugins" DESTINATION /qml)
install(DIRECTORY "qml/settings" DESTINATION /qml)
install(DIRECTORY "qml/logicalFields" DESTINATION /qml)
install(DIRECTORY "qml/controlStreams" DESTINATION /qml)
install(DIRECTORY "qml/streams" DESTINATION /qml)
install(DIRECTORY "qml/controlSemaphores" DESTINATION /qml)
install(DIRECTORY "qml/semaphores" DESTINATION /qml)
install(DIRECTORY "qml/pushNotifications" DESTINATION /qml)
install(DIRECTORY "js" DESTINATION .)
install(DIRECTORY "py" DESTINATION .)
# Translations
file(GLOB_RECURSE I18N_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po qml/*.qml qml/*.js)
list(APPEND I18N_SRC_FILES ${DESKTOP_FILE_NAME}.in.h)
find_program(INTLTOOL_MERGE intltool-merge)
if(NOT INTLTOOL_MERGE)
message(FATAL_ERROR "Could not find intltool-merge, please install the intltool package")
endif()
find_program(INTLTOOL_EXTRACT intltool-extract)
if(NOT INTLTOOL_EXTRACT)
message(FATAL_ERROR "Could not find intltool-extract, please install the intltool package")
endif()
add_custom_target(${DESKTOP_FILE_NAME} ALL
COMMENT "Merging translations into ${DESKTOP_FILE_NAME}..."
COMMAND LC_ALL=C ${INTLTOOL_MERGE} -d -u ${CMAKE_SOURCE_DIR}/po ${CMAKE_SOURCE_DIR}/${DESKTOP_FILE_NAME}.in ${DESKTOP_FILE_NAME}
COMMAND sed -i 's/${PROJECT_NAME}-//g' ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE_NAME}
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE_NAME} DESTINATION ${DATA_DIR})
add_subdirectory(po)
add_subdirectory(qml)
# Make source files visible in qtcreator
file(GLOB_RECURSE PROJECT_SRC_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
qml/*.qml
qml/*.js
src/*
*.json
*.json.in
*.apparmor
*.desktop.in
)
add_custom_target(${PROJECT_NAME}_FILES ALL SOURCES ${PROJECT_SRC_FILES})