1
1
cmake_minimum_required (VERSION 3.3)
2
2
project (QZXing)
3
3
4
+ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
5
+
4
6
option (BUILD_SHARED "Build as shared library" OFF )
5
7
6
8
if (BUILD_SHARED)
7
9
SET (SOVERSION_MAJOR 3)
8
10
SET (SOVERSION_MINOR 3)
9
11
SET (SOVERSION_PATCH 0)
12
+ SET (SOVERSION_FULL "${SOVERSION_MAJOR} .${SOVERSION_MINOR} .${SOVERSION_PATCH} " )
10
13
11
14
OPTION (QZXING_MULTIMEDIA "" OFF )
12
15
OPTION (QZXING_USE_QML "" OFF )
@@ -39,6 +42,8 @@ set(PUBLIC_HEADERS
39
42
QZXing_global.h
40
43
)
41
44
45
+ set (PUBLIC_DEFINES "" )
46
+
42
47
set (SOURCES
43
48
44
49
CameraImageWrapper.cpp
@@ -53,7 +58,7 @@ if(QZXING_MULTIMEDIA)
53
58
54
59
LIST (APPEND SOURCES QZXingFilter.cpp QZXingFilter.h)
55
60
LIST (APPEND PUBLIC_HEADERS QZXingFilter.h)
56
- add_definitions (-DQZXING_MULTIMEDIA )
61
+ LIST ( APPEND PUBLIC_DEFINES QZXING_MULTIMEDIA )
57
62
58
63
SET (QZXING_USE_QML ON )
59
64
@@ -62,18 +67,18 @@ endif(QZXING_MULTIMEDIA)
62
67
if (QZXING_USE_QML)
63
68
LIST (APPEND SOURCES QZXingImageProvider.cpp QZXingImageProvider.h)
64
69
LIST (APPEND PUBLIC_HEADERS QZXingImageProvider.h)
65
- add_definitions (-DQZXING_QML )
70
+ LIST ( APPEND PUBLIC_DEFINES QZXING_QML )
66
71
endif (QZXING_USE_QML)
67
72
68
73
if (QZXING_USE_ENCODER)
69
- add_definitions (-DENABLE_ENCODER_GENERIC -DENABLE_ENCODER_QR_CODE )
74
+ LIST ( APPEND PUBLIC_DEFINES ENABLE_ENCODER_GENERIC ENABLE_ENCODER_QR_CODE )
70
75
endif (QZXING_USE_ENCODER)
71
76
72
77
if (BUILD_SHARED)
73
78
add_library (qzxing SHARED ${SOURCES} )
74
79
set_target_properties (qzxing
75
80
PROPERTIES
76
- VERSION ${SOVERSION_MAJOR} . ${SOVERSION_MINOR} . ${SOVERSION_PATCH }
81
+ VERSION ${SOVERSION_FULL }
77
82
SOVERSION ${SOVERSION_MAJOR}
78
83
)
79
84
else ()
@@ -105,21 +110,15 @@ target_link_libraries(qzxing Qt5::Core Qt5::Gui)
105
110
106
111
if (QZXING_MULTIMEDIA)
107
112
target_link_libraries (qzxing Qt5::Multimedia)
108
- target_compile_definitions (qzxing PUBLIC -DQZXING_MULTIMEDIA)
109
113
endif (QZXING_MULTIMEDIA)
110
114
111
115
if (QZXING_USE_QML)
112
116
target_link_libraries (qzxing
113
117
Qt5::Svg
114
118
Qt5::Quick
115
119
Qt5::QuickControls2)
116
- target_compile_definitions (qzxing PUBLIC -DQZXING_QML)
117
120
endif (QZXING_USE_QML)
118
121
119
- if (QZXING_USE_ENCODER)
120
- target_compile_definitions (qzxing PUBLIC -DENABLE_ENCODER_GENERIC -DENABLE_ENCODER_QR_CODE)
121
- endif (QZXING_USE_ENCODER)
122
-
123
122
if (QZXING_USE_DECODER_QR_CODE)
124
123
target_compile_definitions (qzxing PRIVATE -DENABLE_DECODER_QR_CODE)
125
124
endif ()
@@ -146,9 +145,11 @@ endif()
146
145
147
146
if (!BUILD_SHARED)
148
147
# Change Global Definitions depending on how you want to use the library
149
- target_compile_definitions (qzxing PUBLIC DISABLE_LIBRARY_FEATURES)
148
+ list ( APPEND PUBLIC_DEFINES DISABLE_LIBRARY_FEATURES)
150
149
endif ()
151
150
151
+ target_compile_definitions (qzxing PUBLIC ${PUBLIC_DEFINES} )
152
+
152
153
# Target includes
153
154
target_include_directories (qzxing
154
155
PRIVATE
@@ -163,6 +164,7 @@ target_include_directories(qzxing
163
164
164
165
if (BUILD_SHARED)
165
166
include (GNUInstallDirs)
167
+ include (JoinPaths)
166
168
167
169
set (QZXING_INSTALL_TARGETS qzxing)
168
170
@@ -176,4 +178,15 @@ if(BUILD_SHARED)
176
178
install (
177
179
FILES ${PUBLIC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /qzxing"
178
180
)
181
+
182
+ join_paths(PC_LIBDIR "\$ {prefix}" "${CMAKE_INSTALL_LIBDIR} " )
183
+ join_paths(PC_INCLUDEDIR "\$ {prefix}" "${CMAKE_INSTALL_INCLUDEDIR} " "qzxing" )
184
+
185
+ string (REPLACE ";" " -D" PC_DEFINES "${PUBLIC_DEFINES} " )
186
+ if (PC_DEFINES)
187
+ set (PC_DEFINES "-D${PC_DEFINES} " )
188
+ endif ()
189
+
190
+ configure_file (QZXing.pc.in ${CMAKE_CURRENT_BINARY_DIR} /QZXing.pc @ONLY)
191
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /QZXing.pc DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
179
192
endif ()
0 commit comments