11cmake_minimum_required (VERSION 3.3)
22project (QZXing)
33
4+ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
5+
46option (BUILD_SHARED "Build as shared library" OFF )
57
68if (BUILD_SHARED)
79 SET (SOVERSION_MAJOR 3)
810 SET (SOVERSION_MINOR 3)
911 SET (SOVERSION_PATCH 0)
12+ SET (SOVERSION_FULL "${SOVERSION_MAJOR} .${SOVERSION_MINOR} .${SOVERSION_PATCH} " )
1013
1114 OPTION (QZXING_MULTIMEDIA "" OFF )
1215 OPTION (QZXING_USE_QML "" OFF )
@@ -39,6 +42,8 @@ set(PUBLIC_HEADERS
3942 QZXing_global.h
4043)
4144
45+ set (PUBLIC_DEFINES "" )
46+
4247set (SOURCES
4348
4449 CameraImageWrapper.cpp
@@ -53,7 +58,7 @@ if(QZXING_MULTIMEDIA)
5358
5459 LIST (APPEND SOURCES QZXingFilter.cpp QZXingFilter.h)
5560 LIST (APPEND PUBLIC_HEADERS QZXingFilter.h)
56- add_definitions (-DQZXING_MULTIMEDIA )
61+ LIST ( APPEND PUBLIC_DEFINES QZXING_MULTIMEDIA )
5762
5863 SET (QZXING_USE_QML ON )
5964
@@ -62,24 +67,27 @@ endif(QZXING_MULTIMEDIA)
6267if (QZXING_USE_QML)
6368 LIST (APPEND SOURCES QZXingImageProvider.cpp QZXingImageProvider.h)
6469 LIST (APPEND PUBLIC_HEADERS QZXingImageProvider.h)
65- add_definitions (-DQZXING_QML )
70+ LIST ( APPEND PUBLIC_DEFINES QZXING_QML )
6671endif (QZXING_USE_QML)
6772
6873if (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 )
7075endif (QZXING_USE_ENCODER)
7176
7277if (BUILD_SHARED)
7378 add_library (qzxing SHARED ${SOURCES} )
7479 set_target_properties (qzxing
7580 PROPERTIES
76- VERSION ${SOVERSION_MAJOR} . ${SOVERSION_MINOR} . ${SOVERSION_PATCH }
81+ VERSION ${SOVERSION_FULL }
7782 SOVERSION ${SOVERSION_MAJOR}
7883)
7984else ()
8085 add_library (qzxing "" ${SOURCES} )
8186endif ()
8287
88+ # Change Global Definitions depending on how you want to use the library
89+ list (APPEND PUBLIC_DEFINES DISABLE_LIBRARY_FEATURES)
90+
8391if (WIN32 )
8492 add_subdirectory (zxing/win32 )
8593 if (MSVC )
@@ -105,20 +113,16 @@ target_link_libraries(qzxing Qt5::Core Qt5::Gui)
105113
106114if (QZXING_MULTIMEDIA)
107115 target_link_libraries (qzxing Qt5::Multimedia)
108- target_compile_definitions (qzxing PUBLIC -DQZXING_MULTIMEDIA)
109116endif (QZXING_MULTIMEDIA)
110117
111118if (QZXING_USE_QML)
112119 target_link_libraries (qzxing
113120 Qt5::Svg
114121 Qt5::Quick
115122 Qt5::QuickControls2)
116- target_compile_definitions (qzxing PUBLIC -DQZXING_QML)
117123endif (QZXING_USE_QML)
118124
119- if (QZXING_USE_ENCODER)
120- target_compile_definitions (qzxing PUBLIC -DENABLE_ENCODER_GENERIC -DENABLE_ENCODER_QR_CODE)
121- endif (QZXING_USE_ENCODER)
125+ target_compile_definitions (qzxing PUBLIC ${PUBLIC_DEFINES} )
122126
123127if (QZXING_USE_DECODER_QR_CODE)
124128 target_compile_definitions (qzxing PRIVATE -DENABLE_DECODER_QR_CODE)
@@ -144,11 +148,6 @@ if(QZXING_USE_DECODER_1D_BARCODES)
144148 target_compile_definitions (qzxing PRIVATE -DENABLE_DECODER_1D_BARCODES)
145149endif ()
146150
147- if (!BUILD_SHARED)
148- # Change Global Definitions depending on how you want to use the library
149- target_compile_definitions (qzxing PUBLIC DISABLE_LIBRARY_FEATURES)
150- endif ()
151-
152151# Target includes
153152target_include_directories (qzxing
154153 PRIVATE
@@ -163,6 +162,7 @@ target_include_directories(qzxing
163162
164163if (BUILD_SHARED)
165164 include (GNUInstallDirs)
165+ include (JoinPaths)
166166
167167 set (QZXING_INSTALL_TARGETS qzxing)
168168
@@ -176,4 +176,15 @@ if(BUILD_SHARED)
176176 install (
177177 FILES ${PUBLIC_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /qzxing"
178178 )
179+
180+ join_paths(PC_LIBDIR "\$ {prefix}" "${CMAKE_INSTALL_LIBDIR} " )
181+ join_paths(PC_INCLUDEDIR "\$ {prefix}" "${CMAKE_INSTALL_INCLUDEDIR} " "qzxing" )
182+
183+ string (REPLACE ";" " -D" PC_DEFINES "${PUBLIC_DEFINES} " )
184+ if (PC_DEFINES)
185+ set (PC_DEFINES "-D${PC_DEFINES} " )
186+ endif ()
187+
188+ configure_file (QZXing.pc.in ${CMAKE_CURRENT_BINARY_DIR} /QZXing.pc @ONLY)
189+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /QZXing.pc DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
179190endif ()
0 commit comments