Skip to content

Commit 5339850

Browse files
committed
refactor: unify DTK5 and DTK6 build system
1. Replaced automatic DTK version detection with explicit DTK5 option for unified build configuration 2. Introduced DTK_NAME_SUFFIX variable to differentiate between DTK5 (empty) and DTK6 ("6") builds 3. Updated all CMake configuration files to use DTK_VERSION_MAJOR and DTK_NAME_SUFFIX consistently 4. Modified Debian packaging to support both DTK5 and DTK6 with separate build profiles 5. Added DTK6-specific Debian package definitions and installation scripts 6. Updated debian/rules to handle separate builds for DTK5 and DTK6 with proper version mapping 7. Fixed include paths, library names, and configuration file names to follow DTK naming conventions 8. Ensured proper Qt version selection (Qt5 for DTK5, Qt6 for DTK6) throughout the build system Log: Unified build system now supports both DTK5 and DTK6 with explicit configuration options Influence: 1. Test building with DTK5=ON to ensure DTK5 compatibility 2. Test building with DTK5=OFF to ensure DTK6 compatibility 3. Verify library naming: dtkdeclarative for DTK5, dtk6declarative for DTK6 4. Check include paths: /usr/include/dtk5/ for DTK5, /usr/include/dtk6/ for DTK6 5. Test Debian packaging with different build profiles (nodtk5, nodtk6, nodoc) 6. Verify CMake configuration files are generated with correct names 7. Ensure QML plugin installation paths are correct for both Qt5 and Qt6 8. Test example applications (dtk-exhibition and dtk6-exhibition) functionality refactor: 统一 DTK5 和 DTK6 构建系统 1. 将自动 DTK 版本检测改为显式 DTK5 选项,实现统一构建配置 2. 引入 DTK_NAME_SUFFIX 变量区分 DTK5(空)和 DTK6("6")构建 3. 更新所有 CMake 配置文件以一致使用 DTK_VERSION_MAJOR 和 DTK_NAME_SUFFIX 4. 修改 Debian 打包以支持 DTK5 和 DTK6 的独立构建配置 5. 添加 DTK6 特定的 Debian 包定义和安装脚本 6. 更新 debian/rules 以处理 DTK5 和 DTK6 的独立构建及版本映射 7. 修复包含路径、库名称和配置文件名称以遵循 DTK 命名约定 8. 确保整个构建系统中正确选择 Qt 版本(DTK5 用 Qt5,DTK6 用 Qt6) Log: 统一构建系统现在支持通过显式配置选项构建 DTK5 和 DTK6 Influence: 1. 测试使用 DTK5=ON 构建以确保 DTK5 兼容性 2. 测试使用 DTK5=OFF 构建以确保 DTK6 兼容性 3. 验证库命名:DTK5 为 dtkdeclarative,DTK6 为 dtk6declarative 4. 检查包含路径:DTK5 为 /usr/include/dtk5/,DTK6 为 /usr/include/dtk6/ 5. 测试使用不同构建配置(nodtk5、nodtk6、nodoc)的 Debian 打包 6. 验证 CMake 配置文件是否以正确名称生成 7. 确保 QML 插件安装路径对 Qt5 和 Qt6 都正确 8. 测试示例应用程序(dtk-exhibition 和 dtk6-exhibition)的功能
1 parent 4e3d866 commit 5339850

21 files changed

+260
-102
lines changed

CMakeLists.txt

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,42 @@
11
cmake_minimum_required(VERSION 3.10)
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)
5+
66
project(DtkDeclarative
7-
VERSION "${DTK_VERSION}"
7+
VERSION ${FILE_VERSION}
88
DESCRIPTION "DTK Declarative module"
99
HOMEPAGE_URL "https://github.com/linuxdeepin/dtkdeclarative"
1010
LANGUAGES CXX
1111
)
1212

13-
if (${PROJECT_VERSION_MAJOR} STREQUAL "5")
14-
set(QT_DEFAULT_MAJOR_VERSION "5")
15-
set(QT_VERSION_MAJOR "5")
13+
# 引入 DTK5/DTK6 构建选项
14+
option(DTK5 "Build DTK5." ON)
15+
if(DTK5)
16+
set(DTK_VERSION_MAJOR "5")
17+
set(DTK_NAME_SUFFIX "") # DTK5 产品名称后缀为空
1618
set(EnableQt5 on)
1719
set(EnableDtk5 on)
1820
set(EnableQt6 off)
1921
set(EnableDtk6 off)
20-
elseif(${PROJECT_VERSION_MAJOR} STREQUAL "6")
21-
set(QT_DEFAULT_MAJOR_VERSION "6")
22-
set(QT_VERSION_MAJOR "6")
22+
else()
2323
set(DTK_VERSION_MAJOR "6")
24+
set(DTK_NAME_SUFFIX "6") # DTK6 产品名称后缀为 "6"
2425
set(EnableQt5 off)
2526
set(EnableDtk5 off)
2627
set(EnableQt6 on)
2728
set(EnableDtk6 on)
28-
else()
29-
message(FATAL_ERROR "Only support DTK_VERSION is 5 or 6")
3029
endif()
3130

31+
set(DTK_VERSION_MINOR ${PROJECT_VERSION_MINOR})
32+
set(DTK_VERSION_PATCH ${PROJECT_VERSION_PATCH})
33+
set(DTK_VERSION "${DTK_VERSION_MAJOR}.${DTK_VERSION_MINOR}.${DTK_VERSION_PATCH}")
34+
# 官方约定:DTK5 使用 Qt5,DTK6 使用 Qt6
35+
set(QT_VERSION_MAJOR ${DTK_VERSION_MAJOR})
36+
set(QT_DEFAULT_MAJOR_VERSION ${QT_VERSION_MAJOR})
37+
3238
set(ENABLE_COV OFF CACHE BOOL "Generate coverage info")
33-
set(LIB_NAME dtk${DTK_VERSION_MAJOR}declarative)
39+
set(LIB_NAME dtk${DTK_NAME_SUFFIX}declarative)
3440

3541
set(CMAKE_CXX_STANDARD 11)
3642
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -50,9 +56,9 @@ include(DtkBuildConfig)
5056
set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation")
5157

5258
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Library install path")
53-
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${PROJECT_VERSION_MAJOR}/DDeclarative" CACHE STRING "Headers install path")
59+
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${DTK_VERSION_MAJOR}/DDeclarative" CACHE STRING "Headers install path")
5460
set(TEMPLATE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/qtcreator/templates/wizards/projects/qml${DTK_VERSION_MAJOR}-app-template" CACHE STRING "Directory to install QtCreator template")
55-
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_VERSION_MAJOR}Declarative" CACHE STRING "CMake config file install directory")
61+
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_NAME_SUFFIX}Declarative" CACHE STRING "CMake config file install directory")
5662
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE STRING "Directory to install pkg-config file")
5763
set(MKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "Qt pri module install directory")
5864
set(QML_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/qml" CACHE STRING "Qml plugin install directory")
@@ -88,7 +94,7 @@ else ()
8894
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")
8995
endif ()
9096

91-
set(DDECLARATIVE_TRANSLATIONS_DIR "dtk${PROJECT_VERSION_MAJOR}/DDeclarative/translations" CACHE STRING "DDeclarative translations directory")
97+
set(DDECLARATIVE_TRANSLATIONS_DIR "dtk${DTK_VERSION_MAJOR}/DDeclarative/translations" CACHE STRING "DDeclarative translations directory")
9298
set(DDECLARATIVE_TRANSLATIONS_PATH "share/${DDECLARATIVE_TRANSLATIONS_DIR}")
9399
set(TRANSLATIONS_INSTALL_PATH "${DDECLARATIVE_TRANSLATIONS_PATH}")
94100

@@ -135,20 +141,20 @@ install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/misc/qml-app-template/" DESTINATION
135141

136142
configure_package_config_file(
137143
"${CMAKE_CURRENT_LIST_DIR}/misc/DtkDeclarativeConfig.cmake.in"
138-
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfig.cmake"
144+
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfig.cmake"
139145
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
140146
)
141147
write_basic_package_version_file(
142-
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfigVersion.cmake"
143-
VERSION ${VERSION}
148+
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfigVersion.cmake"
149+
VERSION ${DTK_VERSION}
144150
COMPATIBILITY SameMajorVersion
145151
)
146152
# Install cmake config file
147-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfig.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
148-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfigVersion.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
153+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfig.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
154+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfigVersion.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
149155
# Install pkg-config file
150-
configure_file("${PROJECT_SOURCE_DIR}/misc/dtkdeclarative.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_VERSION_MAJOR}declarative.pc" @ONLY)
151-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_VERSION_MAJOR}declarative.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
156+
configure_file("${PROJECT_SOURCE_DIR}/misc/dtkdeclarative.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_NAME_SUFFIX}declarative.pc" @ONLY)
157+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_NAME_SUFFIX}declarative.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
152158
# Install qmake module config file
153159
configure_file("${CMAKE_CURRENT_LIST_DIR}/misc/qt_lib_dtkdeclarative.pri.in" "${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkdeclarative.pri" @ONLY)
154160
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkdeclarative.pri" DESTINATION "${MKSPECS_INSTALL_DIR}")

chameleon/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
set(PLUGIN_NAME ${STYLE_PLUGIN_NAME})
22

3-
find_package(Dtk${DTK_VERSION_MAJOR}Gui REQUIRED)
3+
find_package(Dtk${DTK_NAME_SUFFIX}Gui REQUIRED)
44
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
55
Qml
66
Quick

debian/control

Lines changed: 101 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,59 +3,141 @@ Section: libs
33
Priority: optional
44
Maintainer: Deepin Packages Builder <[email protected]>
55
Build-Depends:
6-
debhelper-compat ( =12),
6+
debhelper-compat (= 12),
77
cmake,
8-
qtdeclarative5-dev,
9-
qtbase5-dev-tools,
10-
qtquickcontrols2-5-dev,
11-
libdtkgui-dev,
12-
libdtkcore-dev,
13-
qtdeclarative5-private-dev,
14-
qtbase5-private-dev,
158
pkg-kde-tools,
169
libgtest-dev,
17-
doxygen,
18-
qttools5-dev-tools,
19-
qttools5-dev,
20-
doxyqml,
10+
libdtkcommon-dev,
11+
qtdeclarative5-dev <!nodtk5>,
12+
qtbase5-dev-tools <!nodtk5>,
13+
qtquickcontrols2-5-dev <!nodtk5>,
14+
libdtkgui-dev <!nodtk5>,
15+
libdtkcore-dev <!nodtk5>,
16+
qtdeclarative5-private-dev <!nodtk5>,
17+
qtbase5-private-dev <!nodtk5>,
18+
qttools5-dev-tools <!nodtk5>,
19+
qttools5-dev <!nodtk5>,
20+
qt6-declarative-dev <!nodtk6>,
21+
qt6-base-dev-tools <!nodtk6>,
22+
libqt6quickcontrols2-6 <!nodtk6>,
23+
libdtk6gui-dev <!nodtk6>,
24+
libdtk6core-dev <!nodtk6>,
25+
qt6-declarative-private-dev <!nodtk6>,
26+
qt6-base-private-dev <!nodtk6>,
27+
qt6-tools-dev-tools <!nodtk6>,
28+
qt6-tools-dev <!nodtk6>,
29+
qt6-shadertools-dev <!nodtk6>,
30+
doxygen <!nodoc>,
31+
doxyqml <!nodoc>,
2132
Standards-Version: 3.9.8
2233
Homepage: http://www.deepin.org
2334

35+
# DTK6 包
36+
Package: qml6-module-qtquick-controls-styles-chameleon
37+
Architecture: any
38+
Depends: ${shlibs:Depends}, ${misc:Depends},
39+
qml6-module-qtquick,
40+
qml6-module-qtquick-controls,
41+
qml6-module-qtquick-shapes,
42+
qml6-module-qt5compat-graphicaleffects,
43+
qml6-module-qtqml-workerscript,
44+
qml6-module-qtquick-templates,
45+
qml6-module-qtquick-effects,
46+
libdtk6declarative( =${binary:Version})
47+
Build-Profiles: <!nodtk6>
48+
Description: Deepin Tool Kit Qt Quick Controls 2 QML module (DTK6 with Qt6)
49+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
50+
.
51+
This package is built for DTK6 with Qt6.
52+
53+
Package: libdtk6declarative
54+
Architecture: any
55+
Depends: ${shlibs:Depends}, ${misc:Depends},
56+
libdtk6core
57+
Multi-Arch: same
58+
Build-Profiles: <!nodtk6>
59+
Description: Deepin Tool Kit Declarative library (DTK6 with Qt6)
60+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
61+
.
62+
This package contains the shared libraries.
63+
This package is built for DTK6 with Qt6.
64+
65+
Package: libdtk6declarative-dev
66+
Architecture: any
67+
Depends: ${shlibs:Depends}, ${misc:Depends},
68+
libdtk6declarative( =${binary:Version}),
69+
qml6-module-qtquick-controls-styles-chameleon( =${binary:Version}),
70+
libdtk6core-dev,
71+
libdtk6gui-dev,
72+
libdtkcommon-dev,
73+
qt6-base-dev,
74+
qt6-declarative-dev
75+
Build-Profiles: <!nodtk6>
76+
Description: Deepin Tool Kit Declarative Devel library (DTK6 with Qt6)
77+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
78+
.
79+
This package contains the header files and shared libraries of DtkDeclarative.
80+
This package is built for DTK6 with Qt6.
81+
82+
Package: dtk6-exhibition
83+
Architecture: any
84+
Depends: ${shlibs:Depends}, ${misc:Depends},
85+
libdtk6declarative( =${binary:Version}),
86+
qml6-module-qtquick-controls-styles-chameleon( =${binary:Version})
87+
Build-Profiles: <!nodtk6>
88+
Description: Deepin Tool Kit QML Controls example (DTK6 with Qt6)
89+
This package contains an application.
90+
.
91+
This package is built for DTK6 with Qt6.
92+
93+
# DTK5 包
2494
Package: qml-module-qtquick-controls2-styles-chameleon
2595
Architecture: any
2696
Depends: ${shlibs:Depends}, ${misc:Depends}, qml-module-qtquick-shapes (>= 5.11.3), qml-module-qtgraphicaleffects,
2797
libdtkdeclarative5( =${binary:Version})
98+
Build-Profiles: <!nodtk5>
2899
Description: Deepin Tool Kit Qt Quick Controls 2 QML module
29100
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
30101

31102
Package: libdtkdeclarative5
32103
Architecture: any
33104
Depends: ${shlibs:Depends}, ${misc:Depends},
34-
libdtkcore5 (>= 5.6.12)
105+
libdtkcore5 (>= 5.6.12)
35106
Multi-Arch: same
36-
Description: Deepin Tool Kit Gui library
107+
Build-Profiles: <!nodtk5>
108+
Description: Deepin Tool Kit Declarative library
37109
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
38110
.
39111
This package contains the shared libraries.
40112

41113
Package: libdtkdeclarative-dev
42114
Architecture: any
43-
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdeclarative5( =${binary:Version})
44-
Description: Deepin Tool Kit Gui Devel library
115+
Depends: ${shlibs:Depends}, ${misc:Depends},
116+
libdtkdeclarative5( =${binary:Version}),
117+
qml-module-qtquick-controls2-styles-chameleon( =${binary:Version}),
118+
libdtkcore-dev,
119+
libdtkgui-dev,
120+
libdtkcommon-dev,
121+
qtbase5-dev,
122+
qtdeclarative5-dev
123+
Build-Profiles: <!nodtk5>
124+
Description: Deepin Tool Kit Declarative Devel library
45125
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
46126
.
47127
This package contains the header files and shared libraries of DtkDeclarative
48128

49129
Package: libdtkdeclarative-doc
50130
Architecture: any
51131
Depends: ${misc:Depends}
52-
Description: Deepin Tool Kit Gui Devel library (Document)
132+
Build-Profiles: <!nodtk5 !nodoc>
133+
Description: Deepin Tool Kit Declarative Devel library (Document)
53134
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
54135

55136
Package: dtk-exhibition
56137
Architecture: any
57138
Depends: ${shlibs:Depends}, ${misc:Depends},
58139
libdtkdeclarative5( =${binary:Version}),
59140
qml-module-qtquick-controls2-styles-chameleon( =${binary:Version})
60-
Description: Deepin Tool Kit QML Controls example.
61-
This package contains a applicatioin.
141+
Build-Profiles: <!nodtk5>
142+
Description: Deepin Tool Kit QML Controls example
143+
This package contains an application.

debian/dtk6-exhibition.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/lib/*/*/DDeclarative/*
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
usr/lib/*/libdtk6declarative.so
2+
usr/include/dtk6/
3+
usr/lib/*/pkgconfig/dtk6declarative.pc
4+
usr/lib/*/cmake/Dtk6Declarative/*.cmake
5+
usr/lib/*/qt6/mkspecs/*
6+
usr/share/qtcreator/templates/wizards/projects/qml6-app-template/*

debian/libdtk6declarative.install

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
usr/lib/*/libdtk6declarative.so.*
2+
usr/lib/*/qt6/qml/org/deepin/dtk/*
3+
usr/share/dtk6/DDeclarative/translations/*.qm
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
usr/lib/*/lib*.so
2-
usr/include
3-
usr/lib/*/pkgconfig/*.pc
4-
usr/lib/*/cmake/*/*.cmake
1+
usr/lib/*/libdtkdeclarative.so
2+
usr/include/dtk5/
3+
usr/lib/*/pkgconfig/dtkdeclarative.pc
4+
usr/lib/*/cmake/DtkDeclarative/*.cmake
55
usr/lib/*/qt5/mkspecs/*
6-
usr/share/qtcreator/*
6+
usr/share/qtcreator/templates/wizards/projects/qml5-app-template/*

debian/libdtkdeclarative5.install

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
usr/lib/*/lib*.so.*
1+
usr/lib/*/libdtkdeclarative.so.*
22
usr/lib/*/qt5/qml/org/deepin/dtk/*
3-
usr/share/*/*/translations/*.qm
3+
usr/share/dtk5/DDeclarative/translations/*.qm
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/lib/*/qt6/qml/Chameleon/*

debian/rules

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
#!/usr/bin/make -f
22
DPKG_EXPORT_BUILDFLAGS = 1
33
include /usr/share/dpkg/default.mk
4-
export QT_SELECT = qt5
54

65
# 安全编译参数
76
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
87
export DEB_CFLAGS_MAINT_APPEND = -Wall
98
export DEB_CXXFLAGS_MAINT_APPEND = -Wall
109
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wl,-E
1110

12-
# reproducible编译参数
11+
# reproducible 编译参数
1312
DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_SKIP_BUILD_RPATH=ON
1413

14+
# 版本映射:x.y.z -> 5.y.z 和 6.y.z
15+
DTK5_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/5\1/')
16+
DTK6_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/6\1/')
17+
18+
# Build-Profiles 控制
19+
BUILD_DOCS := $(if $(filter nodoc,$(DEB_BUILD_PROFILES)),OFF,ON)
20+
BUILD_DTK5 := $(if $(filter nodtk5,$(DEB_BUILD_PROFILES)),OFF,ON)
21+
BUILD_DTK6 := $(if $(filter nodtk6,$(DEB_BUILD_PROFILES)),OFF,ON)
22+
1523
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
1624

1725
VERSION = $(DEB_VERSION_UPSTREAM)
@@ -23,4 +31,55 @@ BUILD_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$2}' | sed 's/[^0-
2331
dh $@
2432

2533
override_dh_auto_configure:
26-
dh_auto_configure -- $(DEB_CMAKE_EXTRA_FLAGS) -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=ON -DBUILD_VERSION=$(BUILD_VER) -DDTK_VERSION=$(PACK_VER)
34+
ifeq ($(BUILD_DTK5),ON)
35+
mkdir -p build-dtk5
36+
QT_SELECT=qt5 dh_auto_configure --builddirectory=build-dtk5 -- \
37+
$(DEB_CMAKE_EXTRA_FLAGS) \
38+
-DBUILD_EXAMPLES=OFF \
39+
-DBUILD_DOCS=$(BUILD_DOCS) \
40+
-DBUILD_VERSION=$(BUILD_VER) \
41+
-DDTK_VERSION=$(PACK_VER) \
42+
-DDTK5=ON
43+
endif
44+
ifeq ($(BUILD_DTK6),ON)
45+
mkdir -p build-dtk6
46+
dh_auto_configure --builddirectory=build-dtk6 -- \
47+
$(DEB_CMAKE_EXTRA_FLAGS) \
48+
-DBUILD_EXAMPLES=OFF \
49+
-DBUILD_DOCS=OFF \
50+
-DBUILD_VERSION=$(BUILD_VER) \
51+
-DDTK_VERSION=$(PACK_VER) \
52+
-DDTK5=OFF
53+
endif
54+
55+
override_dh_auto_build:
56+
ifeq ($(BUILD_DTK5),ON)
57+
QT_SELECT=qt5 dh_auto_build --builddirectory=build-dtk5
58+
endif
59+
ifeq ($(BUILD_DTK6),ON)
60+
dh_auto_build --builddirectory=build-dtk6
61+
endif
62+
63+
override_dh_auto_install:
64+
ifeq ($(BUILD_DTK5),ON)
65+
QT_SELECT=qt5 dh_auto_install --builddirectory=build-dtk5
66+
endif
67+
ifeq ($(BUILD_DTK6),ON)
68+
dh_auto_install --builddirectory=build-dtk6
69+
endif
70+
71+
override_dh_makeshlibs:
72+
ifeq ($(BUILD_DTK5),ON)
73+
dh_makeshlibs -V "libdtkdeclarative5 (>= $(shell echo $(DTK5_VERSION) | cut -d '.' -f 1,2))" -plibdtkdeclarative5
74+
endif
75+
ifeq ($(BUILD_DTK6),ON)
76+
dh_makeshlibs -V "libdtk6declarative (>= $(DTK6_VERSION))" -plibdtk6declarative
77+
endif
78+
79+
override_dh_auto_test:
80+
# 测试在 build 阶段已执行
81+
82+
override_dh_auto_clean:
83+
dh_auto_clean --builddirectory=build-dtk5
84+
dh_auto_clean --builddirectory=build-dtk6
85+
rm -rf build-dtk5 build-dtk6

0 commit comments

Comments
 (0)