-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathCMakeLists.txt
174 lines (136 loc) · 5.41 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
163
164
165
166
167
168
169
170
171
172
173
174
cmake_minimum_required(VERSION 3.12)
project(ViewYourMind-release)
find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
set(QtComponents
LinguistTools
Network
PrintSupport
Script
Svg
Widgets
Xml
)
set(QtLibraries
Qt5::Network
Qt5::PrintSupport
Qt5::Script
Qt5::Svg
Qt5::Widgets
Qt5::Xml
)
# Switch on Debug mode with one of below:
# cmake -DCMAKE_BUILD_TYPE=Debug .
# set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
# On Linux DBUS is used for IPC with vym
# On openSUSE install it using: zypper install dbus-1-devel
if (UNIX)
find_package(DBus1)
if(DBus1_FOUND)
LIST(APPEND QtComponents DBus)
LIST(APPEND QtLibraries Qt5::DBus)
endif()
endif()
if(WIN32)
set(OPENSSL_ROOT_DIR "C:/OpenSSL-Win64")
find_package(OpenSSL)
if( OPENSSL_FOUND )
include_directories(${OPENSSL_INCLUDE_DIRS})
link_directories(${OPENSSL_LIBRARIES})
message(STATUS "Using OpenSSL version: ${OPENSSL_VERSION}")
else()
message(STATUS "No openSSL found?!")
# Error; with REQUIRED, pkg_search_module() will throw an error by it's own
endif()
#target_link_libraries(${YOUR_TARGET_HERE} ${OPENSSL_LIBRARIES})
#target_link_libraries(project_name /path/of/libssl.so /path/of/libcrypto.so)
set(CMAKE_INSTALL_DATAROOTDIR ".")
endif()
include(GNUInstallDirs)
find_package(Qt5 COMPONENTS ${QtComponents} REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
list(APPEND CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/forms")
get_target_property(QtLibraryType Qt5::Widgets TYPE)
if(QtLibraryType STREQUAL STATIC_LIBRARY)
message(STATUS "Static Qt linkage")
list(APPEND QtLibraries Qt5::QSvgPlugin)
endif()
include_directories(
${CMAKE_SOURCE_DIR}
)
# Source files
file(GLOB VymSources RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp")
if(WIN32)
list(APPEND VymSources
src/mkdtemp.cpp
vym.rc
)
ADD_COMPILE_DEFINITIONS(_USE_MATH_DEFINES)
endif()
# Add DBUS interfaces, if DBUS is available on platform
if(DBus1_FOUND)
list(APPEND VymSources src/dbus/adaptormodel.cpp src/dbus/adaptorvym.cpp)
include_directories(${CMAKE_SOURCE_DIR}/src/dbus ${CMAKE_SOURCE_DIR}/src)
ADD_COMPILE_DEFINITIONS(VYM_DBUS)
endif()
# Translations (release)
# To update the translation files based on source code changes
# first call manually
# lupdate-qt5 src/ -ts lang/*.ts
#
# Qt6 will have a dedicated macro:
# https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-lrelease.html
#file(GLOB ts_files ABSOLUTE ${CMAKE_BINARY_DIR} "lang/*.ts")
file(GLOB ts_files RELATIVE ${CMAKE_SOURCE_DIR} "lang/*.ts")
message(STATUS "Creating ${CMAKE_BINARY_DIR}/translations")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/translations")
set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_BINARY_DIR}/translations)
#set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_SOURCE_DIR}/translations)
#QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR} ${ts_files})
#QT5_create_translation(qm_files ${CMAKE_BINARY_DIR} ${ts_files})
#QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR}/src)
QT5_add_translation(qm_files ${ts_files})
add_compile_definitions(CMAKE_SOURCE_DIR)
message(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
message(STATUS "ts_files: ${ts_files}")
message(STATUS "qm_files: ${qm_files}")
ADD_COMPILE_DEFINITIONS(VYMBASEDIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}")
add_executable(vym ${VymSources} vym.qrc ${qm_files})
target_link_libraries(vym ${QtLibraries})
if(WIN32)
set_target_properties(vym PROPERTIES WIN32_EXECUTABLE TRUE)
install(TARGETS vym DESTINATION "${CMAKE_INSTALL_PREFIX}")
else()
install(TARGETS vym DESTINATION bin)
endif()
if(APPLE)
message(STATUS "Detected APPLE")
set_target_properties(vym PROPERTIES MACOSX_BUNDLE TRUE )
# Add property to Info.plist
set(MACOSX_BUNDLE_ICON_FILE vym.icns)
# tell CMake where to find and install the file itself
set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/icons/vym.icns)
set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources")
#FIXME-0 add_executable(vym MACOSX_BUNDLE main.cpp ${APP_ICON_MACOSX})
target_sources(vym PUBLIC ${APP_ICON_MACOSX})
endif()
add_custom_target(make-translations-directory ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/translations)
add_dependencies(vym make-translations-directory)
install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
install(DIRECTORY doc DESTINATION ${CMAKE_INSTALL_DOCDIR} FILES_MATCHING PATTERN "*.pdf")
install(FILES doc/vym.1.gz DESTINATION ${CMAKE_INSTALL_MANDIR})
install(FILES README.md LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR})
install(DIRECTORY exports flags icons macros ${CMAKE_BINARY_DIR}/translations scripts styles DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
if(UNIX)
install(FILES icons/vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps)
file(CREATE_LINK ../apps/vym.png application-x-vym.png SYMBOLIC)
install(FILES ${CMAKE_BINARY_DIR}/application-x-vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes)
install(FILES config/vym.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages)
install(FILES config/vym.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
endif()