@@ -4,35 +4,37 @@ project(QmlMobileScanner VERSION 0.5 LANGUAGES C CXX)
44
55set (CMAKE_CXX_STANDARD 20)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
7- set (CMAKE_INCLUDE_CURRENT_DIR ON )
87set (CMAKE_AUTOMOC ON )
98set (CMAKE_AUTORCC ON )
109
11- set (APP_NAME ${CMAKE_PROJECT_NAME } )
12- set (APP_VERSION ${CMAKE_PROJECT_VERSION } )
10+ set (APP_NAME ${PROJECT_NAME } )
11+ set (APP_VERSION ${PROJECT_VERSION } )
1312
1413option (USE_ZINT "Build with zint support (encoder)" ON )
1514option (USE_ZXINGCPP "Build with zxing-cpp support (decoder & encoder)" ON )
1615option (USE_QZXING "Build with QZXing support (decoder & encoder) (LEGACY)" OFF )
1716
1817################################################################################
1918
20- message (STATUS ">>> BUILDING ${PROJECT_NAME } >>>" )
19+ message (STATUS ">>> BUILDING ${PROJECT_NAME } v ${ PROJECT_VERSION } >>>" )
2120message (STATUS "[CMAKE] CMAKE_VERSION = ${CMAKE_VERSION } " )
2221message (STATUS "[CMAKE] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH } " )
2322message (STATUS "[BUILD] QT_HOST_PATH = ${QT_HOST_PATH} " )
2423message (STATUS "[BUILD] TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE } " )
24+ message (STATUS "[BUILD] BUILD_TYPE = ${CMAKE_BUILD_TYPE } " )
2525message (STATUS "[SYSTEM] (HOST) SYSTEM NAME = ${CMAKE_HOST_SYSTEM_NAME } " )
2626message (STATUS "[SYSTEM] (HOST) SYSTEM VERSION = ${CMAKE_HOST_SYSTEM_VERSION } " )
2727message (STATUS "[SYSTEM] (HOST) SYSTEM PROCESSOR = ${CMAKE_HOST_SYSTEM_PROCESSOR } " )
2828message (STATUS "[SYSTEM] (TARGET) SYSTEM NAME = ${CMAKE_SYSTEM_NAME } " )
2929message (STATUS "[SYSTEM] (TARGET) SYSTEM VERSION = ${CMAKE_SYSTEM_VERSION } " )
3030message (STATUS "[SYSTEM] (TARGET) SYSTEM PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR } " )
31- message (STATUS "[PROJECT] CMAKE_PROJECT_NAME = ${PROJECT_NAME } " )
32- message (STATUS "[PROJECT] CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR } " )
33- message (STATUS "[PROJECT] PROJECT_NAME = ${CMAKE_PROJECT_NAME } " )
34- message (STATUS "[PROJECT] SOURCE_DIR = ${CMAKE_SOURCE_DIR } " )
35- message (STATUS "[PROJECT] BUILD_TYPE = ${CMAKE_BUILD_TYPE } " )
31+ message (STATUS "[TOP PROJECT] CMAKE_PROJECT_NAME = ${CMAKE_PROJECT_NAME } " )
32+ message (STATUS "[TOP PROJECT] CMAKE_PROJECT_VERSION = ${CMAKE_PROJECT_VERSION} " )
33+ message (STATUS "[TOP PROJECT] CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR } " )
34+ message (STATUS "[PROJECT] PROJECT_NAME = ${PROJECT_NAME } " )
35+ message (STATUS "[PROJECT] PROJECT_VERSION = ${PROJECT_VERSION } " )
36+ message (STATUS "[PROJECT] PROJECT_SOURCE_DIR = ${PROJECT_SOURCE_DIR } " )
37+ message (STATUS "[PROJECT] CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR } " )
3638
3739################################################################################
3840
@@ -57,6 +59,7 @@ set(SOURCES
5759 src/BarcodeManager.cpp src/BarcodeManager.h
5860 src/Barcode.cpp src/Barcode.h
5961 src/utils_camera.cpp src/utils_camera.h
62+ src/utils_barcode.cpp src/utils_barcode.h
6063
6164 assets/assets.qrc
6265 thirdparty/IconLibrary/IconLibrary_material.qrc
@@ -72,18 +75,18 @@ else() # Desktop
7275
7376 # Set app icons
7477 #if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
75- # set(SOURCES_DESKTOP "${CMAKE_SOURCE_DIR }/assets/windows/${CMAKE_PROJECT_NAME }.rc")
78+ # set(SOURCES_DESKTOP "${PROJECT_SOURCE_DIR }/assets/windows/${PROJECT_NAME }.rc")
7679 #elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
77- # set(SOURCES_DESKTOP "${CMAKE_SOURCE_DIR }/assets/macos/${CMAKE_PROJECT_NAME }.icns")
80+ # set(SOURCES_DESKTOP "${PROJECT_SOURCE_DIR }/assets/macos/${PROJECT_NAME }.icns")
7881 #endif()
7982endif ()
8083
81- qt_add_executable (${CMAKE_PROJECT_NAME } ${SOURCES} ${SOURCES_DESKTOP} ${SOURCES_MOBILE} )
84+ qt_add_executable (${PROJECT_NAME } ${SOURCES} ${SOURCES_DESKTOP} ${SOURCES_MOBILE} )
8285
83- qt_add_ios_ffmpeg_libraries (${CMAKE_PROJECT_NAME } )
86+ qt_add_ios_ffmpeg_libraries (${PROJECT_NAME } )
8487
85- qt_add_qml_module (${CMAKE_PROJECT_NAME }
86- URI ${CMAKE_PROJECT_NAME }
88+ qt_add_qml_module (${PROJECT_NAME }
89+ URI ${PROJECT_NAME }
8790 NO_PLUGIN
8891 QML_FILES
8992 qml/MobileApplication.qml
@@ -120,9 +123,9 @@ qt_add_qml_module(${CMAKE_PROJECT_NAME}
120123 qml/components/WidgetBarcodeResult.qml
121124)
122125
123- qt_add_translations (${CMAKE_PROJECT_NAME }
124- TS_FILE_BASE ${CMAKE_PROJECT_NAME }
125- TS_FILE_DIR ${CMAKE_SOURCE_DIR } /i18n/
126+ qt_add_translations (${PROJECT_NAME }
127+ TS_FILE_BASE ${PROJECT_NAME }
128+ TS_FILE_DIR ${PROJECT_SOURCE_DIR } /i18n/
126129 RESOURCE_PREFIX "/i18n"
127130)
128131
@@ -136,7 +139,7 @@ function(add_other_files target)
136139 endforeach ()
137140endfunction ()
138141
139- add_other_files (${CMAKE_PROJECT_NAME }
142+ add_other_files (${PROJECT_NAME }
140143 README.md LICENSE.md TODO.md
141144 .github/workflows/builds_mobile.yml
142145 .gitignore
@@ -148,34 +151,34 @@ add_other_files(${CMAKE_PROJECT_NAME}
148151set (UTILS_CLIPBOARD true CACHE BOOL "UTILS_CLIPBOARD" FORCE )
149152set (UTILS_DOCK_ENABLED true CACHE BOOL "UTILS_DOCK_ENABLED" FORCE )
150153add_subdirectory (thirdparty/AppUtils )
151- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE AppUtils )
154+ target_link_libraries (${PROJECT_NAME } PRIVATE AppUtils )
152155
153156# MobileUI
154157add_subdirectory (thirdparty/MobileUI )
155- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE MobileUI MobileUI_plugin )
158+ target_link_libraries (${PROJECT_NAME } PRIVATE MobileUI MobileUI_plugin )
156159
157160# MobileSharing
158161add_subdirectory (thirdparty/MobileSharing )
159- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE MobileSharing )
162+ target_link_libraries (${PROJECT_NAME } PRIVATE MobileSharing MobileSharing_plugin )
160163
161164# ComponentLibrary
162165add_subdirectory (thirdparty/ComponentLibrary )
163- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE ComponentLibrary_plugin )
166+ target_link_libraries (${PROJECT_NAME } PRIVATE ComponentLibrary_plugin )
164167
165168if (USE_ZXINGCPP)
166169 # build zxing-cpp
167170 add_subdirectory (thirdparty/zxing-cpp )
168- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE ZXing )
171+ target_link_libraries (${PROJECT_NAME } PRIVATE ZXing )
169172
170173 # build zxing-cpp Qt wrapper
171174 add_subdirectory (thirdparty/zxing-cpp/wrappers/qt )
172- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE ZXingQt )
173- target_compile_definitions (${CMAKE_PROJECT_NAME } PRIVATE QMS_USE_ZXINGCPP )
175+ target_link_libraries (${PROJECT_NAME } PRIVATE ZXingQt )
176+ target_compile_definitions (${PROJECT_NAME } PRIVATE QMS_USE_ZXINGCPP )
174177elseif (USE_QZXING)
175178 # build QZXing
176179 add_subdirectory (thirdparty/QZXing )
177- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE QZXing )
178- target_compile_definitions (${CMAKE_PROJECT_NAME } PRIVATE QMS_USE_QZXING )
180+ target_link_libraries (${PROJECT_NAME } PRIVATE QZXing )
181+ target_compile_definitions (${PROJECT_NAME } PRIVATE QMS_USE_QZXING )
179182else ()
180183 #
181184endif ()
@@ -184,19 +187,19 @@ if(USE_ZINT)
184187 # build zint
185188 add_subdirectory (thirdparty/zint-qml )
186189if (BUILD_SHARED_LIBS )
187- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE zint )
190+ target_link_libraries (${PROJECT_NAME } PRIVATE zint )
188191else ()
189- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE zint-static )
192+ target_link_libraries (${PROJECT_NAME } PRIVATE zint-static )
190193endif ()
191194
192195 # build Zint QML wrapper
193196 add_subdirectory (thirdparty/zint-qml/wrappers/qml )
194- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE ZintQml )
195- target_compile_definitions (${CMAKE_PROJECT_NAME } PRIVATE QMS_USE_ZINT )
197+ target_link_libraries (${PROJECT_NAME } PRIVATE ZintQml )
198+ target_compile_definitions (${PROJECT_NAME } PRIVATE QMS_USE_ZINT )
196199endif ()
197200
198201# Qt libraries
199- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE
202+ target_link_libraries (${PROJECT_NAME } PRIVATE
200203 Qt6::Core
201204 Qt6::Gui
202205 Qt6::Svg
@@ -210,60 +213,70 @@ target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE
210213if (NOT IOS AND NOT ANDROID )
211214 # for proper systray and menubar support
212215 find_package (Qt6 REQUIRED COMPONENTS Widgets )
213- target_link_libraries (${CMAKE_PROJECT_NAME } PRIVATE Qt6::Widgets )
216+ target_link_libraries (${PROJECT_NAME } PRIVATE Qt6::Widgets )
214217endif ()
215218
216- target_include_directories (${CMAKE_PROJECT_NAME } PRIVATE src/ )
217- target_include_directories (${CMAKE_PROJECT_NAME } PRIVATE thirdparty/ )
219+ target_include_directories (${PROJECT_NAME } PRIVATE src/ )
220+ target_include_directories (${PROJECT_NAME } PRIVATE thirdparty/ )
221+
222+ # Qt official hacks...
223+ set (QML_IMPORT_PATH
224+ "${CMAKE_BINARY_DIR } /thirdparty/"
225+ "${CMAKE_BINARY_DIR } /thirdparty/MobileUI"
226+ "${CMAKE_BINARY_DIR } /thirdparty/ComponentLibrary"
227+ CACHE STRING "QML Modules import paths" FORCE )
228+
229+ # Qt official hacks...
230+ set (QT_QML_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR } )
218231
219232################################################################################
220233
221234## Release build? Set "no debug" macros
222- if (CMAKE_BUILD_TYPE STREQUAL Release)
223- target_compile_definitions (${CMAKE_PROJECT_NAME } PRIVATE
224- NDEBUG
225- QT_NO_DEBUG
226- QT_NO_DEBUG_OUTPUT
227- )
228- endif ()
235+ target_compile_definitions (${PROJECT_NAME } PRIVATE
236+ $<$<CONFIG :Release >:NDEBUG >
237+ $<$<CONFIG :Release >:QT_NO_DEBUG >
238+ $<$<CONFIG :Release >:QT_NO_DEBUG_OUTPUT >
239+ )
229240
230241################################################################################
231242
243+ include (GNUInstallDirs )
244+
232245## Linux
233246if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
234247 # System install rules
235- install (TARGETS ${CMAKE_PROJECT_NAME } RUNTIME DESTINATION bin/)
236- #install(FILES ${CMAKE_SOURCE_DIR }/assets/linux/${CMAKE_PROJECT_NAME }.desktop DESTINATION share /applications/)
237- #install(FILES ${CMAKE_SOURCE_DIR }/assets/linux/${CMAKE_PROJECT_NAME }.appdata.xml DESTINATION share /appdata/)
238- #install(FILES ${CMAKE_SOURCE_DIR }/assets/linux/${CMAKE_PROJECT_NAME }.svg DESTINATION share /pixmaps/)
239- #install(FILES ${CMAKE_SOURCE_DIR }/assets/linux/${CMAKE_PROJECT_NAME }.svg DESTINATION share /icons/hicolor/scalable/apps/)
240- #install(FILES ${CMAKE_SOURCE_DIR }/LICENSE.md DESTINATION share /licenses/${CMAKE_PROJECT_NAME }/)
248+ install (TARGETS ${PROJECT_NAME } RUNTIME DESTINATION bin/)
249+ #install(FILES ${PROJECT_SOURCE_DIR }/assets/linux/${PROJECT_NAME }.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /applications/)
250+ #install(FILES ${PROJECT_SOURCE_DIR }/assets/linux/${PROJECT_NAME }.appdata.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /appdata/)
251+ #install(FILES ${PROJECT_SOURCE_DIR }/assets/linux/${PROJECT_NAME }.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /pixmaps/)
252+ #install(FILES ${PROJECT_SOURCE_DIR }/assets/linux/${PROJECT_NAME }.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /icons/hicolor/scalable/apps/)
253+ #install(FILES ${PROJECT_SOURCE_DIR }/LICENSE.md DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /licenses/${PROJECT_NAME }/)
241254endif ()
242255
243256## macOS
244257if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
245258 #set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
246259 set (CMAKE_OSX_DEPLOYMENT_TARGET "12.0" )
247260
248- #set(app_icon_macos "${CMAKE_SOURCE_DIR }/assets/macos/${CMAKE_PROJECT_NAME }.icns")
261+ #set(app_icon_macos "${PROJECT_SOURCE_DIR }/assets/macos/${PROJECT_NAME }.icns")
249262 #set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
250263
251- set_target_properties (${CMAKE_PROJECT_NAME } PROPERTIES
264+ set_target_properties (${PROJECT_NAME } PROPERTIES
252265 MACOSX_BUNDLE ON
253- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR } /assets/macos/Info.plist"
266+ MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR } /assets/macos/Info.plist"
254267 # New Xcode attributes (???)
255268 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "io.emeric.qmlmobilescanner"
256- XCODE_ATTRIBUTE_PRODUCT_NAME ${CMAKE_PROJECT_NAME }
257- XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${CMAKE_PROJECT_VERSION }
269+ XCODE_ATTRIBUTE_PRODUCT_NAME ${PROJECT_NAME }
270+ XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${PROJECT_VERSION }
258271 XCODE_ATTRIBUTE_MARKETING_VERSION ${PROJECT_VERSION_MAJOR } .${PROJECT_VERSION_MINOR }
259- XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_SOURCE_DIR } /assets/macos/${CMAKE_PROJECT_NAME } .entitlements"
272+ XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${PROJECT_SOURCE_DIR } /assets/macos/${PROJECT_NAME } .entitlements"
260273 #XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon
261274 )
262275endif ()
263276
264277## Windows
265278if (CMAKE_SYSTEM_NAME STREQUAL "Windows" )
266- set_target_properties (${CMAKE_PROJECT_NAME } PROPERTIES
279+ set_target_properties (${PROJECT_NAME } PROPERTIES
267280 WIN32_EXECUTABLE ON
268281 )
269282endif ()
@@ -272,16 +285,16 @@ endif()
272285
273286## Android
274287if (CMAKE_SYSTEM_NAME STREQUAL "Android" )
275- set_target_properties (${CMAKE_PROJECT_NAME } PROPERTIES
288+ set_target_properties (${PROJECT_NAME } PROPERTIES
276289 #QT_ANDROID_ABIS "armeabi-v7a;arm64-v8a;x86;x86_64"
277290 #QT_ANDROID_BUILD_ALL_ABIS ON
278291 QT_ANDROID_MIN_SDK_VERSION 28
279292 QT_ANDROID_TARGET_SDK_VERSION 36
280- QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_SOURCE_DIR } /assets/android/"
293+ QT_ANDROID_PACKAGE_SOURCE_DIR "${PROJECT_SOURCE_DIR } /assets/android/"
281294 )
282295
283296 # Support 16 KB page sizes / pre NDK28
284- target_link_options (${CMAKE_PROJECT_NAME } PRIVATE "-Wl,-z,max-page-size=16384" )
297+ target_link_options (${PROJECT_NAME } PRIVATE "-Wl,-z,max-page-size=16384" )
285298
286299 ## Download SSL Libraries
287300 #include(FetchContent)
@@ -291,25 +304,26 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
291304 # URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip
292305 #)
293306 #FetchContent_MakeAvailable(android_openssl)
294- # include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
307+
295308 ## Include SSL Libraries
296- #add_android_openssl_libraries(${CMAKE_PROJECT_NAME})
309+ #include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
310+ #add_android_openssl_libraries(${PROJECT_NAME})
297311endif ()
298312
299313## iOS
300314if (CMAKE_SYSTEM_NAME STREQUAL "iOS" )
301- #set(app_icon_ios "${CMAKE_SOURCE_DIR }/assets/ios/Assets.xcassets")
315+ #set(app_icon_ios "${PROJECT_SOURCE_DIR }/assets/ios/Assets.xcassets")
302316 #set_source_files_properties(${app_icon_ios} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
303317
304- set_target_properties (${CMAKE_PROJECT_NAME } PROPERTIES
318+ set_target_properties (${PROJECT_NAME } PROPERTIES
305319 MACOSX_BUNDLE ON
306- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR } /assets/ios/Info.plist"
320+ MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR } /assets/ios/Info.plist"
307321 # Qt
308- #QT_IOS_LAUNCH_SCREEN "${CMAKE_SOURCE_DIR }/assets/ios/LaunchScreen.storyboard"
322+ #QT_IOS_LAUNCH_SCREEN "${PROJECT_SOURCE_DIR }/assets/ios/LaunchScreen.storyboard"
309323 # New Xcode attributes (???)
310324 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "io.emeric.qmlmobilescanner"
311- XCODE_ATTRIBUTE_PRODUCT_NAME ${CMAKE_PROJECT_NAME }
312- XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${CMAKE_PROJECT_VERSION }
325+ XCODE_ATTRIBUTE_PRODUCT_NAME ${PROJECT_NAME }
326+ XCODE_ATTRIBUTE_CURRENT_PROJECT_VERSION ${PROJECT_VERSION }
313327 XCODE_ATTRIBUTE_MARKETING_VERSION ${PROJECT_VERSION_MAJOR } .${PROJECT_VERSION_MINOR }
314328 XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "16.0"
315329 XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" # iPhone,iPad
@@ -321,10 +335,15 @@ endif()
321335################################################################################
322336
323337# Output (build)
324- set_target_properties (${CMAKE_PROJECT_NAME } PROPERTIES
325- #ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
326- #LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib"
327- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /bin"
338+ set_target_properties (${PROJECT_NAME } PROPERTIES
339+ RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR } /bin"
340+ )
341+
342+ # Output (install)
343+ install (TARGETS ${PROJECT_NAME }
344+ BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}
345+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
346+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
328347)
329348
330349################################################################################
0 commit comments