Skip to content

Commit 231b6ce

Browse files
18202781743deepin-bot[bot]
authored andcommitted
refactor: unify DTK5 and DTK6 build system
1. Replaced version-based detection with explicit DTK5/DTK6 build option 2. Added DTK5 option (default ON) to control which version to build 3. Modified CMake configuration to handle both DTK5 and DTK6 builds 4. Updated Debian packaging to support both DTK5 and DTK6 packages 5. Added separate build directories and profiles for DTK5/DTK6 6. Updated library naming conventions with proper suffixes 7. Modified installation paths to include version-specific directories 8. Updated pkg-config and CMake configuration files for both versions 9. Ensured proper Qt version selection based on DTK version Log: Added support for building both DTK5 and DTK6 versions from same codebase Influence: 1. Test building with DTK5=ON (default) to ensure DTK5 compatibility 2. Test building with DTK5=OFF to verify DTK6 support 3. Verify Debian package generation for both DTK5 and DTK6 variants 4. Test installation paths for both versions (dtk5/ vs dtk6/ directories) 5. Verify pkg-config files work correctly for both versions 6. Test CMake find_package for both Dtk5Widget and Dtk6Widget 7. Ensure examples and plugins build correctly with both versions 8. Verify translation files are installed to correct locations refactor: 统一DTK5和DTK6构建系统 1. 将基于版本的检测替换为明确的DTK5/DTK6构建选项 2. 添加DTK5选项(默认开启)控制构建哪个版本 3. 修改CMake配置以处理DTK5和DTK6构建 4. 更新Debian打包以支持DTK5和DTK6包 5. 为DTK5/DTK6添加独立的构建目录和配置文件 6. 更新库命名规范,添加适当的后缀 7. 修改安装路径以包含版本特定的目录 8. 更新pkg-config和CMake配置文件以支持两个版本 9. 确保根据DTK版本正确选择Qt版本 Log: 新增从同一代码库构建DTK5和DTK6版本的支持 Influence: 1. 测试使用DTK5=ON(默认)构建,确保DTK5兼容性 2. 测试使用DTK5=OFF构建,验证DTK6支持 3. 验证Debian包生成,确保DTK5和DTK6变体都能正确打包 4. 测试两个版本的安装路径(dtk5/与dtk6/目录) 5. 验证pkg-config文件在两个版本中都能正常工作 6. 测试CMake find_package对Dtk5Widget和Dtk6Widget的支持 7. 确保示例和插件在两个版本中都能正确构建 8. 验证翻译文件安装到正确的位置
1 parent 7b2e7ab commit 231b6ce

27 files changed

+261
-115
lines changed

CMakeLists.txt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
cmake_minimum_required(VERSION 3.13)
22

3-
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" DTK_FILE_VERSION)
4-
string(STRIP "${DTK_FILE_VERSION}" DTK_FILE_VERSION)
5-
set(DTK_VERSION "${DTK_FILE_VERSION}" CACHE STRING "define project version")
3+
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FILE_VERSION)
4+
string(STRIP "${FILE_VERSION}" FILE_VERSION)
65

76
project(DtkWidget
8-
VERSION ${DTK_VERSION}
7+
VERSION ${FILE_VERSION}
98
DESCRIPTION "DTK Widget module"
109
HOMEPAGE_URL "https://github.com/linuxdeepin/dtkwidget"
1110
LANGUAGES CXX C
@@ -19,13 +18,18 @@ endif()
1918
include(GNUInstallDirs)
2019
include(CMakePackageConfigHelpers)
2120

22-
if("${PROJECT_VERSION_MAJOR}" STREQUAL "5")
23-
set(QT_VERSION_MAJOR 5)
24-
include(dtkwidget.cmake)
25-
elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6")
26-
set(QT_VERSION_MAJOR "6")
27-
set(DTK_VERSION_MAJOR "6")
28-
include(dtkwidget.cmake)
21+
option(DTK5 "Build DTK5." ON)
22+
if(DTK5)
23+
set(DTK_VERSION_MAJOR "5")
24+
set(DTK_NAME_SUFFIX "")
2925
else()
30-
message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.")
26+
set(DTK_VERSION_MAJOR "6")
27+
set(DTK_NAME_SUFFIX "6")
3128
endif()
29+
30+
set(DTK_VERSION_MINOR ${PROJECT_VERSION_MINOR})
31+
set(DTK_VERSION_PATCH ${PROJECT_VERSION_PATCH})
32+
set(DTK_VERSION "${DTK_VERSION_MAJOR}.${DTK_VERSION_MINOR}.${DTK_VERSION_PATCH}")
33+
set(QT_VERSION_MAJOR ${DTK_VERSION_MAJOR})
34+
35+
include(dtkwidget.cmake)

archlinux/PKGBUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ build() {
2828
-DQCH_INSTALL_DESTINATION=share/doc/qt \
2929
-DCMAKE_INSTALL_LIBDIR=lib \
3030
-DCMAKE_INSTALL_PREFIX=/usr \
31-
-DCMAKE_BUILD_TYPE=Release
31+
-DDTK5=ON
3232
ninja
3333
}
3434

debian/control

Lines changed: 96 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,104 @@
11
Source: dtkwidget
22
Section: libdevel
33
Priority: optional
4-
Maintainer: Deepin Packages Builder <packages@deepin.com>
5-
Build-Depends: debhelper-compat (= 12), pkg-config, libudev-dev,
6-
libqt5x11extras5-dev, libxext-dev, qttools5-dev-tools, qttools5-dev,
7-
x11proto-xext-dev, libxcb-util0-dev, libstartup-notification0-dev,
8-
libmtdev-dev, qtbase5-private-dev, libegl1-mesa-dev, libudev-dev,
9-
libfontconfig1-dev, libfreetype-dev, libglib2.0-dev, libxrender-dev,
10-
libdtkcore-dev, libgsettings-qt-dev, libqt5svg5-dev, libxi-dev,
11-
libdtkgui-dev, libcups2-dev, libgtest-dev, libdtkcore5-bin, cmake, doxygen
4+
Maintainer: Shanshan Ye <yeshanshan@uniontech.com>
5+
Build-Depends: debhelper-compat (= 12),
6+
cmake,
7+
pkg-config,
8+
libgtest-dev,
9+
libudev-dev,
10+
libxext-dev,
11+
x11proto-xext-dev,
12+
libxcb-util0-dev,
13+
libstartup-notification0-dev,
14+
libmtdev-dev,
15+
libegl1-mesa-dev,
16+
libfontconfig1-dev,
17+
libfreetype-dev,
18+
libglib2.0-dev,
19+
libxrender-dev,
20+
libxi-dev,
21+
libcups2-dev,
22+
libdtkcore-dev <!nodtk5>,
23+
libdtkgui-dev <!nodtk5>,
24+
libdtkcore5-bin <!nodtk5>,
25+
qtbase5-dev <!nodtk5>,
26+
qtbase5-private-dev <!nodtk5>,
27+
qttools5-dev-tools <!nodtk5>,
28+
qttools5-dev <!nodtk5>,
29+
libqt5x11extras5-dev <!nodtk5>,
30+
libqt5svg5-dev <!nodtk5>,
31+
libgsettings-qt-dev <!nodtk5>,
32+
libdtk6core-dev <!nodtk6>,
33+
libdtk6gui-dev <!nodtk6>,
34+
libdtk6core-bin <!nodtk6>,
35+
qt6-base-dev <!nodtk6>,
36+
qt6-base-private-dev <!nodtk6>,
37+
qt6-tools-dev-tools <!nodtk6>,
38+
qt6-tools-dev <!nodtk6>,
39+
qt6-svg-dev <!nodtk6>,
40+
doxygen <!nodoc>
1241
Standards-Version: 3.9.8
1342

43+
Package: libdtk6widget
44+
Architecture: any
45+
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata
46+
Multi-Arch: same
47+
Build-Profiles: <!nodtk6>
48+
Description: Deepin graphical user interface library (DTK6 with Qt6)
49+
DtkWidget is Deepin graphical user interface for deepin desktop development.
50+
.
51+
This package contains the shared libraries.
52+
53+
Package: libdtk6widget-bin
54+
Architecture: any
55+
Depends: ${shlibs:Depends}, ${misc:Depends},
56+
libdtk6widget( =${binary:Version})
57+
Build-Profiles: <!nodtk6>
58+
Description: Deepin graphical user interface library utilities (DTK6 with Qt6)
59+
DtkWidget is Deepin graphical user interface for deepin desktop development.
60+
.
61+
This package contains the utilities which are
62+
needed for developing Deepin applications.
63+
64+
Package: libdtk6widget-dev
65+
Architecture: any
66+
Depends: ${shlibs:Depends}, ${misc:Depends},
67+
libdtk6widget( =${binary:Version}),
68+
libdtk6core-dev, libdtk6gui-dev, libcups2-dev
69+
Build-Profiles: <!nodtk6>
70+
Description: Deepin graphical user interface library (DTK6 with Qt6)
71+
DtkWidget is Deepin graphical user interface for deepin desktop development.
72+
.
73+
This package contains the header files and static libraries which are
74+
needed for developing Deepin applications.
75+
76+
Package: dtk6widget-examples
77+
Architecture: any
78+
Depends: ${shlibs:Depends}, ${misc:Depends},
79+
libdtk6widget( =${binary:Version}), libdtkdata
80+
Build-Profiles: <!nodtk6>
81+
Description: dtk6widget-examples is generated by dtk6widget.
82+
DtkWidget is Deepin graphical user interface for deepin desktop development.
83+
.
84+
This package contains example application which are
85+
needed for developing Deepin applications.
86+
87+
Package: libdtk6widget-doc
88+
Architecture: any
89+
Build-Profiles: <!nodtk6 !nodoc>
90+
Description: Deepin graphical user interface library (DTK6 with Qt6 Document)
91+
DtkWidget is Deepin graphical user interface for deepin desktop development.
92+
.
93+
This package contains example application which are
94+
needed for developing Deepin applications.
95+
1496
Package: libdtkwidget5
1597
Architecture: any
1698
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata,
1799
libqt5widgets5(>= 5.11.3.33) | libqt5widgets5(<= 5.11.3.28)
18100
Multi-Arch: same
101+
Build-Profiles: <!nodtk5>
19102
Description: Deepin graphical user interface library
20103
DtkWidget is Deepin graphical user interface for deepin desktop development.
21104
.
@@ -24,8 +107,8 @@ Description: Deepin graphical user interface library
24107
Package: libdtkwidget5-bin
25108
Architecture: any
26109
Depends: ${shlibs:Depends}, ${misc:Depends},
27-
libdtkwidget5( =${binary:Version}),
28-
libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev
110+
libdtkwidget5( =${binary:Version})
111+
Build-Profiles: <!nodtk5>
29112
Description: Deepin graphical user interface library utilities
30113
DtkWidget is Deepin graphical user interface for deepin desktop development.
31114
.
@@ -38,6 +121,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
38121
libdtkwidget5( =${binary:Version}),
39122
libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev,
40123
libdtkgui-dev, libcups2-dev
124+
Build-Profiles: <!nodtk5>
41125
Description: Deepin graphical user interface library
42126
DtkWidget is Deepin graphical user interface for deepin desktop development.
43127
.
@@ -48,6 +132,7 @@ Package: dtkwidget5-examples
48132
Architecture: any
49133
Depends: ${shlibs:Depends}, ${misc:Depends},
50134
libdtkwidget5( =${binary:Version}), libdtkdata
135+
Build-Profiles: <!nodtk5>
51136
Description: dtkwidget-examples is generated by dtkwidget.
52137
DtkWidget is Deepin graphical user interface for deepin desktop development.
53138
.
@@ -56,6 +141,7 @@ Description: dtkwidget-examples is generated by dtkwidget.
56141

57142
Package: dtkwidget-doc
58143
Architecture: any
144+
Build-Profiles: <!nodtk5 !nodoc>
59145
Description: Deepin graphical user interface library (Document)
60146
DtkWidget is Deepin graphical user interface for deepin desktop development.
61147
.

debian/dtk6widget-examples.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/lib/*/dtk6/DWidget/examples/*

debian/dtkwidget5-examples.install

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
usr/lib/*/*/*/examples/*
1+
usr/lib/*/dtk5/DWidget/examples/*

debian/libdtk6widget-bin.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/libexec/dtk6/DWidget/bin/*

debian/libdtk6widget-dev.install

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
usr/lib/*/libdtk6widget.so
2+
usr/include/dtk6/
3+
usr/lib/*/pkgconfig/dtk6widget.pc
4+
usr/lib/*/cmake/Dtk6Widget/
5+
usr/lib/*/qt6/mkspecs/modules/*

debian/libdtk6widget-doc.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/share/qt6/doc/*.qch

debian/libdtk6widget.install

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
usr/lib/*/libdtk6widget.so.6*
2+
usr/share/dtk6/DWidget/translations/*

debian/libdtkwidget-dev.install

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
usr/lib/*/*.so
2-
usr/include
3-
usr/lib/*/pkgconfig/*.pc
4-
usr/lib/*/cmake/*/*.cmake
1+
usr/lib/*/libdtkwidget.so
2+
usr/include/dtk5/
3+
usr/lib/*/pkgconfig/dtkwidget.pc
4+
usr/lib/*/cmake/DtkWidget/
55
usr/lib/*/qt5/mkspecs/modules/*

0 commit comments

Comments
 (0)