-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCMakeLists.txt
151 lines (121 loc) · 4.13 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
cmake_minimum_required(VERSION 3.16)
project(com.github.jmlich.geotagging LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GNUInstallDirs)
include(FeatureSummary)
enable_testing()
find_package(Git QUIET REQUIRED)
find_package(exiv2 REQUIRED CONFIG NAMES exiv2)
execute_process(COMMAND
"${GIT_EXECUTABLE}" describe --dirty --broken --always --tags
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_VERSION
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(VERSION "${GIT_VERSION}" CACHE STRING "Manaly defined version string")
add_definitions( -DGIT_VERSION="${VERSION}" )
find_package(Qt6 COMPONENTS Core Gui Network Widgets WebEngineWidgets WebChannel LinguistTools REQUIRED)
file(GLOB TS_FILES translation/*.ts)
add_executable(com.github.jmlich.geotagging WIN32
aboutdialog.cpp
changedatetime.cpp
changetime.cpp
datetimedialog.cpp
datetimeedit.cpp
exifinfo.cpp
exifreaderwriter.cpp
formathandler.cpp
gpspanel.cpp
gpspoint.cpp
gpsroute.cpp
gpsrouteslist.cpp
gpssegment.cpp
imagedata.cpp
imageinfo.cpp
imageview.cpp
imagewidgetslist.cpp
importfileprocessor.cpp
keyeventhandler.cpp
main.cpp
mainwindow.cpp
mapwidget.cpp
picturesframe.cpp
picturesscrollarea.cpp
scrollarea.cpp
synchdialog.cpp
synchresultdialog.cpp
synchresultitem.cpp
geotagging.qrc
geotagging.rc
aboutdialog.ui
changedatetime.ui
changetime.ui
imageinfo.ui
mainwindow.ui
synchdialog.ui
${TS_FILES}
)
add_definitions(-DQUICK_TEST_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
QT6_ADD_TRANSLATION(QM_FILES ${TS_FILES})
add_custom_target(translations DEPENDS ${QM_FILES})
add_dependencies(com.github.jmlich.geotagging translations)
QT6_CREATE_TRANSLATION(QT_FILES "${CMAKE_SOURCE_DIR}"
OPTIONS "-no-obsolete")
install(FILES ${QM_FILES}
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/com.github.jmlich.geotagging/translation")
install(FILES "com.github.jmlich.geotagging.desktop"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
install(FILES "icons/geotagging.png"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/86x86/apps"
RENAME "com.github.jmlich.geotagging.png")
install(FILES "icons/geotagging128.png"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps"
RENAME "com.github.jmlich.geotagging.png")
install(FILES "com.github.jmlich.geotagging.appdata.xml"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo")
install(TARGETS com.github.jmlich.geotagging RUNTIME
DESTINATION ${CMAKE_INSTALL_BINDIR})
target_compile_definitions(com.github.jmlich.geotagging
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(com.github.jmlich.geotagging
PRIVATE Qt6::Core Qt6::Gui Qt6::Network Qt6::Widgets Qt6::WebEngineWidgets Qt6::WebChannel exiv2lib)
option(DEPLOY_QT_LIBRARIES "Deploy Qt libraries to executable path" OFF)
if(DEPLOY_QT_LIBRARIES)
if(WIN32)
include(DeployQt)
windeployqt(com.github.jmlich.geotagging)
elseif(APPLE)
include(DeployQt)
macdeployqt(com.github.jmlich.geotagging)
endif()
endif()
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
# generate proper GUI program on specified platform
if(WIN32) # Check if we are on Windows
add_compile_definitions(_HAS_AUTO_PTR_ETC=1)
if(MSVC) # Check if we are using the Visual Studio compiler
set_target_properties(${PROJECT_NAME} PROPERTIES
WIN32_EXECUTABLE YES
LINK_FLAGS "/ENTRY:mainCRTStartup"
)
elseif(CMAKE_COMPILER_IS_GNUCXX)
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows") # Not tested
else()
message(SEND_ERROR "You are using an unsupported Windows compiler! (Not MSVC or GCC)")
endif(MSVC)
elseif(APPLE)
set_target_properties(${PROJECT_NAME} PROPERTIES
MACOSX_BUNDLE YES
)
elseif(UNIX)
# Nothing special required
else()
message(SEND_ERROR "You are on an unsupported platform! (Not Win32, Mac OS X or Unix)")
endif(WIN32)