Skip to content

Commit ec606e2

Browse files
committed
Add zxing-cpp
1 parent 81c5384 commit ec606e2

10 files changed

Lines changed: 134 additions & 36 deletions

File tree

.github/workflows/msvc.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,32 @@ jobs:
163163
cmake --install . --config ${{matrix.BUILD_TYPE}} --strip
164164
)
165165
166+
- name: build zxing-cpp
167+
working-directory: ${{env.SOURCE_DIR}}
168+
run: |
169+
IF NOT EXIST ${{env.INSTALL_DIR}}/lib/cmake/ZXing (
170+
git clone -b v3.0.2 https://github.com/zxing-cpp/zxing-cpp.git
171+
cd zxing-cpp
172+
cmake -E make_directory build
173+
cd build
174+
cmake .. ^
175+
-A ${{matrix.CMAKE_GENERATOR_PLATFORM}} ^
176+
-T ${{matrix.VCPKG_PLATFORM_TOOLSET}} ^
177+
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} ^
178+
-DCMAKE_INSTALL_PREFIX="${{env.INSTALL_DIR}}" ^
179+
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 ^
180+
-DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" ^
181+
-DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/tigervnc/vcpkg_installed ^
182+
-DVCPKG_VERBOSE=ON ^
183+
-DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} ^
184+
-DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON ^
185+
-DVCPKG_APPLOCAL_DEPS=ON ^
186+
-DVCPKG_TRACE_FIND_PACKAGE=ON ^
187+
-DZXING_EXAMPLES=OFF
188+
cmake --build . --config ${{matrix.BUILD_TYPE}}
189+
cmake --install . --config ${{matrix.BUILD_TYPE}} --strip
190+
)
191+
166192
- name: git clone RabbitCommon
167193
working-directory: ${{env.SOURCE_DIR}}
168194
run: git clone https://github.com/KangLin/RabbitCommon.git

Package/rpm/rabbitim.spec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Requires: zlib gnutls nettle gmp pam
3333
Requires: qt6-qtbase qt6-qtbase-mysql qt6-qtbase-odbc qt6-qtbase-postgresql
3434
Requires: qt6-qtmultimedia qt6-qt5compat qt6-qtscxml qt6-qtsvg
3535
Requires: qt6-qtpositioning qt6-qtspeech
36-
Requires: qxmpp-qt6
36+
Requires: qxmpp-qt6 zxing-cpp
3737
Requires: mysql-libs
3838

3939
%description
@@ -72,7 +72,7 @@ cmake . -B $RPM_BUILD_DIR \
7272
-DWITH_CMARK_GFM=ON \
7373
-DENABLE_UPDATE_TRANSLATIONS=ON \
7474
-DRABBIT_ENABLE_INSTALL_TARGETS=ON \
75-
-DINSTALL_QZXING=ON
75+
-DINSTALL_ZXING_CPP=ON
7676
cmake --build $RPM_BUILD_DIR --config Release --parallel $(nproc)
7777

7878
%install

Plugin/App/QRCode/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#QZXing库
2-
OPTION(OPTION_RABBITIM_USE_QZXING "Use QZXing library" ON)
3-
if(OPTION_RABBITIM_USE_QZXING)
2+
OPTION(RABBITIM_USE_QZXING "Use QZXing library" ON)
3+
if(RABBITIM_USE_QZXING)
44
FIND_PACKAGE(qzxing)
55
if(NOT qzxing_FOUND)
66
message("Download from https://github.com/ftylitak/qzxing.git")

Plugin/Protocol/ProtocolQXmpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#qxmpp库
2-
#OPTION(OPTION_RABBITIM_USE_QXMPP "Use qxmpp library" ON)
2+
#OPTION(RABBITIM_USE_QXMPP "Use qxmpp library" ON)
33
PROJECT(ProtocolQXmpp)
44
if(${QT_VERSION_MAJOR} EQUAL 6)
55
SET(QXMPP_NAME QXmppQt6)

Script/build_depend.sh

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ fi
3838
RabbitCommon=0
3939
QXMPP=0
4040
QZXING=0
41+
ZXING_CPP=0
4142

4243
# Display detailed usage information
4344
usage_long() {
@@ -107,7 +108,7 @@ parse_with_getopt() {
107108
# 后面没有冒号表示没有参数。后跟有一个冒号表示有参数。跟两个冒号表示有可选参数。
108109
# -l 或 --long 选项后面是可接受的长选项,用逗号分开,冒号的意义同短选项。
109110
# -n 选项后接选项解析错误时提示的脚本名字
110-
OPTS=help,install:,source:,tools:,build:,verbose::,package:,package-tool:,system_update::,system-update::,base::,default::,default-qt5::,default-qt6::,macos::,qt::,rabbitcommon::,qxmpp::,qzxing::
111+
OPTS=help,install:,source:,tools:,build:,verbose::,package:,package-tool:,system_update::,system-update::,base::,default::,default-qt5::,default-qt6::,macos::,qt::,rabbitcommon::,qxmpp::,qzxing::,zxing-cpp::
111112

112113
# Parse arguments using getopt
113114
# -o: short options
@@ -280,6 +281,17 @@ parse_with_getopt() {
280281
esac
281282
shift 2
282283
;;
284+
--zxing-cpp)
285+
case "$2" in
286+
"")
287+
ZXING_CPP=1
288+
;;
289+
*)
290+
ZXING_CPP="$2"
291+
;;
292+
esac
293+
shift 2
294+
;;
283295
--) # End of options
284296
shift
285297
break
@@ -337,6 +349,7 @@ show_configuration() {
337349
echo " RabbitCommon: $RabbitCommon"
338350
echo " QXMPP: $QXMPP"
339351
echo " QZXing: $QZXing"
352+
echo " ZXing: $ZXING_CPP"
340353
echo ""
341354
echo "Other Settings:"
342355
echo " Verbose Mode: $BUILD_VERBOSE"
@@ -511,16 +524,20 @@ if [ $DEFAULT_LIBS -eq 1 ]; then
511524
qt6-svg-dev qt6-l10n-tools qt6-translations-l10n \
512525
qt6-scxml-dev qt6-multimedia-dev qt6-positioning-dev \
513526
libqt6sql6-mysql libqt6sql6-sqlite libqt6sql6-odbc libqt6sql6-psql \
514-
qt6-speech-dev
527+
qt6-speech-dev libqt6qml6
515528
fi
516529
else
517530
if [ $QT -ne 1 ]; then
518531
package_install qt5-qmake qtbase5-dev qtbase5-dev-tools qttools5-dev \
519532
qtmultimedia5-dev libqt5scxml5-dev libqt5svg5-dev libqt5gstreamer-dev \
520-
qtquickcontrols2-5-dev libqt5multimedia5-plugins
533+
qtquickcontrols2-5-dev libqt5multimedia5-plugins libqt5qml5
521534
fi
522535
package_install libqxmpp-dev
523536
fi
537+
if [ $ZXING_CPP -ne 1 ]; then
538+
package_install libzxing-dev
539+
fi
540+
524541
fi # apt
525542

526543
if [ "$PACKAGE_TOOL" = "dnf" ]; then
@@ -538,7 +555,7 @@ if [ $DEFAULT_LIBS -eq 1 ]; then
538555
fi
539556

540557
if [ $MACOS -eq 1 ]; then
541-
package_install qt
558+
package_install qt zxing-cpp
542559
fi
543560
fi
544561

@@ -636,5 +653,27 @@ if [ $QZXING -eq 1 ]; then
636653
popd
637654
fi
638655

656+
if [ $ZXING_CPP -eq 1 ]; then
657+
echo_status "Install zxing-cpp ......"
658+
pushd "$SOURCE_DIR"
659+
if [ ! -d ${INSTALL_DIR}/${LIB_PATH}/cmake/ZXing ]; then
660+
if [ ! -d qzxing ]; then
661+
git clone -b v3.0.2 https://github.com/zxing-cpp/zxing-cpp.git
662+
cd zxing-cpp
663+
git submodule update --init --recursive
664+
fi
665+
cmake -E make_directory $BUILD_DEPEND_DIR/zxing-cpp
666+
pushd $BUILD_DEPEND_DIR/zxing-cpp
667+
cmake -S $SOURCE_DIR/zxing-cpp -DCMAKE_BUILD_TYPE=Release \
668+
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
669+
-DCMAKE_VERBOSE_MAKEFILE=${BUILD_VERBOSE} \
670+
-DZXING_EXAMPLES=OFF
671+
cmake --build . --config Release --parallel $(nproc)
672+
cmake --install . --config Release
673+
popd
674+
fi
675+
popd
676+
fi
677+
639678
popd
640679
popd

Script/build_linux.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ if [ $DEB -eq 1 ]; then
470470
echo_status "build deb package ......"
471471

472472
./build_depend.sh --system_update --base --default ${DEFAULT_QT} \
473-
--rabbitcommon --qzxing \
473+
--rabbitcommon --qzxing --zxing-cpp \
474474
--install=${INSTALL_DIR} \
475475
--source=${SOURCE_DIR} \
476476
--tools=${TOOLS_DIR} \
@@ -483,7 +483,7 @@ if [ $DEB -eq 1 ]; then
483483
git config --global --add safe.directory $REPO_ROOT
484484
fi
485485

486-
export CMAKE_CONFIG_PARAS="$CMAKE_CONFIG_PARAS -DINSTALL_QZXING=ON "
486+
export CMAKE_CONFIG_PARAS="$CMAKE_CONFIG_PARAS -DINSTALL_QZXING=ON -DINSTALL_ZXING_CPP=ON"
487487
./build_debpackage.sh --install=${INSTALL_DIR} \
488488
--rabbitcommon=${SOURCE_DIR}/RabbitCommon \
489489
--verbose=${BUILD_VERBOSE}
@@ -522,7 +522,7 @@ if [ $APPIMAGE -eq 1 ]; then
522522
export CMAKE_PREFIX_PATH=${INSTALL_DIR}:${CMAKE_PREFIX_PATH}
523523

524524
./build_depend.sh --system_update --base --default ${DEFAULT_QT} \
525-
--rabbitcommon --qzxing ${depend_para} \
525+
--rabbitcommon --qzxing --zxing-cpp ${depend_para} \
526526
--install=${INSTALL_DIR} \
527527
--source=${SOURCE_DIR} \
528528
--tools=${TOOLS_DIR} \
@@ -542,7 +542,7 @@ if [ $RPM -eq 1 ]; then
542542
echo_status "build rpm package ......"
543543
#dnf builddep -y ${REPO_ROOT}/Package/rpm/RabbitIm.spec
544544
./build_depend.sh --system_update --base --default --package-tool=dnf \
545-
--rabbitcommon \
545+
--rabbitcommon --zxing-cpp \
546546
--install=${INSTALL_DIR} \
547547
--source=${SOURCE_DIR} \
548548
--tools=${TOOLS_DIR} \

Src/CMakeLists.txt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ project(RabbitIm)
55
set(QT_COMPONENTS Multimedia Xml Network)
66

77
#QZXing库
8-
OPTION(OPTION_RABBITIM_USE_QZXING "Use QZXing library" ON)
9-
if(OPTION_RABBITIM_USE_QZXING)
8+
OPTION(RABBITIM_USE_QZXING "Use QZXing library" ON)
9+
if(RABBITIM_USE_QZXING)
1010
FIND_PACKAGE(qzxing)
1111
if(qzxing_FOUND)
1212
list(APPEND RABBITIM_DEFINES RABBITIM_USE_QZXING)
@@ -21,6 +21,20 @@ if(OPTION_RABBITIM_USE_QZXING)
2121
endif()
2222
message("Found QZXing: ${qzxing_FOUND}")
2323

24+
OPTION(RABBITIM_USE_ZXING_CPP "Use zxing-cpp library" ON)
25+
if(RABBITIM_USE_ZXING_CPP)
26+
find_package(ZXing)
27+
if(ZXing_FOUND)
28+
message("ZXing version: ${ZXing_VERSION}")
29+
list(APPEND RABBITIM_PRIVATE_LIBS ZXing::ZXing)
30+
list(APPEND RABBITIM_DEFINES RABBITIM_USE_ZXING_CPP)
31+
OPTION(INSTALL_ZXING_CPP "Install ZXing-cpp target" OFF)
32+
if(INSTALL_ZXING_CPP)
33+
INSTALL_TARGETS(TARGETS ZXing::ZXing)
34+
endif()
35+
endif()
36+
endif()
37+
2438
include(Files.cmake)
2539

2640
#资源
@@ -84,6 +98,7 @@ endforeach()
8498
ADD_TARGET(NAME ${PROJECT_NAME}
8599
SOURCE_FILES ${RABBITIM_SOURCES} ${HEADER_FILES} ${RABBITIM_UIS} ${RABBITIM_RCC_FILES}
86100
LIBS ${RABBITIM_LIBS} ${QT_LIBRARIES}
101+
PRIVATE_LIBS ${RABBITIM_PRIVATE_LIBS}
87102
DEFINITIONS RABBITCOMMON ${RABBITIM_DEFINES}
88103
RabbitIm_VERSION="${RabbitIm_VERSION}"
89104
RabbitIm_REVISION="${RabbitIm_REVISION}"

Src/Emoji/Emoji.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,4 +324,5 @@ void CEmoji::onSmileyPackChanged()
324324
{
325325
loadingMutex.lock();
326326
QtConcurrent::run(&load, CGlobal::Instance()->GetFileEmoji(), this);
327+
return;
327328
}

Src/Files.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SET(INSTALL_HEADER_FILES
1+
list(APPEND INSTALL_HEADER_FILES
22
common/QRCode.h
33
common/Tool.h
44
Client/Client.h
@@ -11,7 +11,7 @@ SET(INSTALL_HEADER_FILES
1111
FileTransfer/FileTransfer.h
1212
)
1313

14-
SET(RABBITIM_HEADER_FILES ${INSTALL_HEADER_FILES}
14+
list(APPEND RABBITIM_HEADER_FILES ${INSTALL_HEADER_FILES}
1515
MainWindow.h
1616
Widgets/MainAnimation.h
1717
Widgets/FrmLogin/FrmLogin.h
@@ -43,7 +43,7 @@ SET(RABBITIM_HEADER_FILES ${INSTALL_HEADER_FILES}
4343
${CMAKE_SOURCE_DIR}/Plugin/ManagePluginProtocol.h
4444
)
4545

46-
SET(RABBITIM_SOURCES
46+
list(APPEND RABBITIM_SOURCES
4747
MainWindow.cpp
4848
common/Tool.cpp
4949
common/QRCode.cpp
@@ -112,7 +112,7 @@ SET(RABBITIM_SOURCES
112112
Widgets/MainAnimation.cpp
113113
)
114114

115-
SET(RABBITIM_UIS
115+
list(APPEND RABBITIM_UIS
116116
MainWindow.ui
117117
Widgets/FrmLogin/FrmLogin.ui
118118
Widgets/FrmUserList/FrmUserList.ui

0 commit comments

Comments
 (0)