Skip to content

Commit d0e70ef

Browse files
committed
Add qt barcode scanner
1 parent fcfd82e commit d0e70ef

15 files changed

Lines changed: 2838 additions & 0 deletions
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# Build directories
2+
build/
3+
Build/
4+
BUILD/
5+
debug/
6+
Debug/
7+
release/
8+
Release/
9+
RelWithDebInfo/
10+
MinSizeRel/
11+
12+
# CMake generated files
13+
CMakeCache.txt
14+
CMakeFiles/
15+
cmake_install.cmake
16+
Makefile
17+
*.cmake
18+
19+
# Qt generated files
20+
*.pro.user
21+
*.pro.user.*
22+
ui_*.h
23+
moc_*.cpp
24+
moc_*.h
25+
qrc_*.cpp
26+
27+
# Compiled Object files
28+
*.slo
29+
*.lo
30+
*.o
31+
*.obj
32+
33+
# Precompiled Headers
34+
*.gch
35+
*.pch
36+
37+
# Compiled Dynamic libraries
38+
*.so
39+
*.dylib
40+
*.dll
41+
42+
# Fortran module files
43+
*.mod
44+
*.smod
45+
46+
# Compiled Static libraries
47+
*.lai
48+
*.la
49+
*.a
50+
*.lib
51+
52+
# Executables
53+
*.exe
54+
*.out
55+
*.app
56+
57+
# Visual Studio files
58+
*.vcxproj.user
59+
*.vcxproj.filters
60+
*.sln.docstates
61+
*.suo
62+
*.user
63+
*.aps
64+
*.pch
65+
*.vspscc
66+
*_i.c
67+
*_p.c
68+
*.ncb
69+
*.tlb
70+
*.tlh
71+
*.bak
72+
*.cache
73+
*.ilk
74+
*.log
75+
[Dd]ebug*/
76+
[Rr]elease*/
77+
*.sbr
78+
*.sdf
79+
*.opensdf
80+
*.opendb
81+
*.ipch
82+
83+
# Xcode files
84+
*.xcodeproj/
85+
*.xcworkspace/
86+
DerivedData/
87+
88+
# Qt Creator
89+
*.autosave
90+
91+
# macOS
92+
.DS_Store
93+
.AppleDouble
94+
.LSOverride
95+
96+
# Linux
97+
*~
98+
99+
# Temporary files
100+
*.tmp
101+
*.temp
102+
*.swp
103+
*.swo
104+
*~
105+
106+
# Test and debug files
107+
*test*
108+
*debug*
109+
*Test*
110+
*Debug*
111+
CRASH_*.md
112+
CAMERA_*.md
113+
BARCODE_*.md
114+
JPEG_*.md
115+
IMAGE_*.md
116+
*-simple.*
117+
*-minimal.*
118+
diagnose-*.bat
119+
120+
# IDE files
121+
.vscode/
122+
.idea/
123+
*.code-workspace
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
cmake_minimum_required(VERSION 3.16)
2+
3+
project(QtBarcodeScanner VERSION 1.0 LANGUAGES CXX)
4+
5+
set(CMAKE_CXX_STANDARD 17)
6+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7+
8+
# Set Qt directory manually
9+
set(Qt6_DIR "C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6")
10+
set(CMAKE_PREFIX_PATH "C:/Qt/6.7.2/msvc2019_64")
11+
12+
# Enable Qt's MOC, UIC, and RCC
13+
set(CMAKE_AUTOMOC ON)
14+
set(CMAKE_AUTOUIC ON)
15+
set(CMAKE_AUTORCC ON)
16+
17+
# Platform detection
18+
if(WIN32)
19+
set(WINDOWS TRUE)
20+
elseif(UNIX)
21+
if(APPLE)
22+
set(MACOS TRUE)
23+
else()
24+
set(LINUX TRUE)
25+
endif()
26+
endif()
27+
28+
# Define camera support - hybrid approach (Qt6 + OpenCV)
29+
add_definitions(-DENABLE_CAMERA=1)
30+
add_definitions(-DENABLE_OPENCV_CAMERA=1)
31+
32+
# Include DCR headers
33+
include_directories("${PROJECT_SOURCE_DIR}/../../dcv/include/")
34+
35+
# Include OpenCV headers
36+
include_directories("${PROJECT_SOURCE_DIR}/../../cvcamera/include/")
37+
38+
# Find Qt6 - minimal approach without tools
39+
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Multimedia MultimediaWidgets)
40+
41+
# Simple approach - define source files directly
42+
set(SOURCES
43+
main.cpp
44+
mainwindow.cpp
45+
barcodeworker.cpp
46+
videosurface.cpp
47+
opencvcamera.cpp
48+
mainwindow.ui
49+
)
50+
51+
set(HEADERS
52+
mainwindow.h
53+
barcodeworker.h
54+
videosurface.h
55+
opencvcamera.h
56+
)
57+
58+
# Add executable
59+
add_executable(QtBarcodeScanner WIN32 ${SOURCES} ${HEADERS})
60+
61+
# Link Qt libraries
62+
target_link_libraries(QtBarcodeScanner PRIVATE
63+
Qt6::Core
64+
Qt6::Widgets
65+
Qt6::Multimedia
66+
Qt6::MultimediaWidgets
67+
)
68+
69+
# DCR library paths and linking
70+
if(WINDOWS)
71+
# Set library directories - use absolute path
72+
set(DCR_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../dcv/lib/win")
73+
set(OPENCV_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../cvcamera/lib/windows")
74+
75+
# Link DCR libraries with full paths
76+
target_link_libraries(QtBarcodeScanner PRIVATE
77+
"${DCR_LIB_DIR}/DynamsoftCaptureVisionRouterx64.lib"
78+
"${DCR_LIB_DIR}/DynamsoftLicensex64.lib"
79+
"${DCR_LIB_DIR}/DynamsoftCorex64.lib"
80+
"${DCR_LIB_DIR}/DynamsoftUtilityx64.lib"
81+
"${DCR_LIB_DIR}/DynamsoftBarcodeReaderx64.lib"
82+
# OpenCV libraries for hybrid camera support
83+
"${OPENCV_LIB_DIR}/opencv_core480.lib"
84+
"${OPENCV_LIB_DIR}/opencv_imgproc480.lib"
85+
"${OPENCV_LIB_DIR}/opencv_highgui480.lib"
86+
"${OPENCV_LIB_DIR}/opencv_videoio480.lib"
87+
"${OPENCV_LIB_DIR}/opencv_imgcodecs480.lib"
88+
)
89+
elseif(MACOS)
90+
link_directories("${PROJECT_SOURCE_DIR}/../../dcv/lib/mac/")
91+
target_link_libraries(QtBarcodeScanner PRIVATE
92+
"DynamsoftCaptureVisionRouter"
93+
"DynamsoftLicense"
94+
"DynamsoftCore"
95+
"DynamsoftUtility"
96+
"DynamsoftBarcodeReader"
97+
)
98+
elseif(LINUX)
99+
link_directories("${PROJECT_SOURCE_DIR}/../../dcv/lib/linux/")
100+
target_link_libraries(QtBarcodeScanner PRIVATE
101+
"DynamsoftCaptureVisionRouter"
102+
"DynamsoftLicense"
103+
"DynamsoftCore"
104+
"DynamsoftUtility"
105+
"DynamsoftBarcodeReader"
106+
)
107+
endif()
108+
109+
# Copy DLLs for Windows
110+
if(WINDOWS)
111+
# Copy Qt DLLs
112+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
113+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
114+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6Core.dll"
115+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
116+
117+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
118+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
119+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6Gui.dll"
120+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
121+
122+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
123+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
124+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6Widgets.dll"
125+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
126+
127+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
128+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
129+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6Multimedia.dll"
130+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
131+
132+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
133+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
134+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6MultimediaWidgets.dll"
135+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
136+
137+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
138+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
139+
"C:/Qt/6.7.2/msvc2019_64/bin/Qt6Network.dll"
140+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
141+
142+
# Create imageformats directory and copy Qt image format plugins
143+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
144+
COMMAND ${CMAKE_COMMAND} -E make_directory
145+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats)
146+
147+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
148+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
149+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qjpeg.dll"
150+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
151+
152+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
153+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
154+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qgif.dll"
155+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
156+
157+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
158+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
159+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qtiff.dll"
160+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
161+
162+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
163+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
164+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qwebp.dll"
165+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
166+
167+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
168+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
169+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qico.dll"
170+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
171+
172+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
173+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
174+
"C:/Qt/6.7.2/msvc2019_64/plugins/imageformats/qsvg.dll"
175+
$<TARGET_FILE_DIR:QtBarcodeScanner>/imageformats/)
176+
177+
# Create platforms directory and copy Qt platform plugins
178+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
179+
COMMAND ${CMAKE_COMMAND} -E make_directory
180+
$<TARGET_FILE_DIR:QtBarcodeScanner>/platforms)
181+
182+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
183+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
184+
"C:/Qt/6.7.2/msvc2019_64/plugins/platforms/qwindows.dll"
185+
$<TARGET_FILE_DIR:QtBarcodeScanner>/platforms/)
186+
187+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
188+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
189+
"C:/Qt/6.7.2/msvc2019_64/plugins/platforms/qminimal.dll"
190+
$<TARGET_FILE_DIR:QtBarcodeScanner>/platforms/)
191+
192+
# Copy Dynamsoft resource files (Templates and Models)
193+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
194+
COMMAND ${CMAKE_COMMAND} -E make_directory
195+
$<TARGET_FILE_DIR:QtBarcodeScanner>/Templates
196+
COMMAND ${CMAKE_COMMAND} -E copy_directory
197+
"${PROJECT_SOURCE_DIR}/../../dcv/resource/Templates"
198+
$<TARGET_FILE_DIR:QtBarcodeScanner>/Templates)
199+
200+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
201+
COMMAND ${CMAKE_COMMAND} -E make_directory
202+
$<TARGET_FILE_DIR:QtBarcodeScanner>/Models
203+
COMMAND ${CMAKE_COMMAND} -E copy_directory
204+
"${PROJECT_SOURCE_DIR}/../../dcv/resource/Models"
205+
$<TARGET_FILE_DIR:QtBarcodeScanner>/Models)
206+
207+
# Copy DCR DLLs - Copy entire directory like command-line example
208+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
209+
COMMAND ${CMAKE_COMMAND} -E copy_directory
210+
"${PROJECT_SOURCE_DIR}/../../dcv/lib/win"
211+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
212+
213+
# Copy OpenCV DLLs for hybrid camera support
214+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
215+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
216+
"${PROJECT_SOURCE_DIR}/../../cvcamera/lib/windows/opencv_core480.dll"
217+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
218+
219+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
220+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
221+
"${PROJECT_SOURCE_DIR}/../../cvcamera/lib/windows/opencv_imgproc480.dll"
222+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
223+
224+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
225+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
226+
"${PROJECT_SOURCE_DIR}/../../cvcamera/lib/windows/opencv_highgui480.dll"
227+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
228+
229+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
230+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
231+
"${PROJECT_SOURCE_DIR}/../../cvcamera/lib/windows/opencv_videoio480.dll"
232+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
233+
234+
add_custom_command(TARGET QtBarcodeScanner POST_BUILD
235+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
236+
"${PROJECT_SOURCE_DIR}/../../cvcamera/lib/windows/opencv_imgcodecs480.dll"
237+
$<TARGET_FILE_DIR:QtBarcodeScanner>)
238+
endif()
239+
240+
# Set output directories
241+
set_target_properties(QtBarcodeScanner PROPERTIES
242+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
243+
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/bin"
244+
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/bin"
245+
)

0 commit comments

Comments
 (0)