Skip to content

Commit 9d17539

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 9d17539

22 files changed

+270
-103
lines changed

CMakeLists.txt

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,41 @@
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+
set(QT_VERSION_MAJOR ${DTK_VERSION_MAJOR})
35+
set(QT_DEFAULT_MAJOR_VERSION ${QT_VERSION_MAJOR})
36+
3237
set(ENABLE_COV OFF CACHE BOOL "Generate coverage info")
33-
set(LIB_NAME dtk${DTK_VERSION_MAJOR}declarative)
38+
set(LIB_NAME dtk${DTK_NAME_SUFFIX}declarative)
3439

3540
set(CMAKE_CXX_STANDARD 11)
3641
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -50,9 +55,9 @@ include(DtkBuildConfig)
5055
set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation")
5156

5257
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")
58+
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dtk${DTK_VERSION_MAJOR}/DDeclarative" CACHE STRING "Headers install path")
5459
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")
60+
set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Dtk${DTK_NAME_SUFFIX}Declarative" CACHE STRING "CMake config file install directory")
5661
set(PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE STRING "Directory to install pkg-config file")
5762
set(MKSPECS_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/mkspecs/modules" CACHE STRING "Qt pri module install directory")
5863
set(QML_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/qt${QT_VERSION_MAJOR}/qml" CACHE STRING "Qml plugin install directory")
@@ -88,7 +93,7 @@ else ()
8893
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast")
8994
endif ()
9095

91-
set(DDECLARATIVE_TRANSLATIONS_DIR "dtk${PROJECT_VERSION_MAJOR}/DDeclarative/translations" CACHE STRING "DDeclarative translations directory")
96+
set(DDECLARATIVE_TRANSLATIONS_DIR "dtk${DTK_VERSION_MAJOR}/DDeclarative/translations" CACHE STRING "DDeclarative translations directory")
9297
set(DDECLARATIVE_TRANSLATIONS_PATH "share/${DDECLARATIVE_TRANSLATIONS_DIR}")
9398
set(TRANSLATIONS_INSTALL_PATH "${DDECLARATIVE_TRANSLATIONS_PATH}")
9499

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

136141
configure_package_config_file(
137142
"${CMAKE_CURRENT_LIST_DIR}/misc/DtkDeclarativeConfig.cmake.in"
138-
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfig.cmake"
143+
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfig.cmake"
139144
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
140145
)
141146
write_basic_package_version_file(
142-
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_VERSION_MAJOR}DeclarativeConfigVersion.cmake"
143-
VERSION ${VERSION}
147+
"${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfigVersion.cmake"
148+
VERSION ${DTK_VERSION}
144149
COMPATIBILITY SameMajorVersion
145150
)
146151
# 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}")
152+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfig.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
153+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Dtk${DTK_NAME_SUFFIX}DeclarativeConfigVersion.cmake" DESTINATION "${CONFIG_INSTALL_DIR}")
149154
# 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}")
155+
configure_file("${PROJECT_SOURCE_DIR}/misc/dtkdeclarative.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_NAME_SUFFIX}declarative.pc" @ONLY)
156+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dtk${DTK_NAME_SUFFIX}declarative.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
152157
# Install qmake module config file
153158
configure_file("${CMAKE_CURRENT_LIST_DIR}/misc/qt_lib_dtkdeclarative.pri.in" "${CMAKE_CURRENT_BINARY_DIR}/qt_lib_dtkdeclarative.pri" @ONLY)
154159
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: 105 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,146 @@
11
Source: dtkdeclarative
22
Section: libs
33
Priority: optional
4-
Maintainer: Deepin Packages Builder <packages@deepin.com>
4+
Maintainer: Shanshan Ye <yeshanshan@uniontech.com>
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+
Package: qml6-module-qtquick-controls2-styles-chameleon
36+
Architecture: any
37+
Depends: ${shlibs:Depends}, ${misc:Depends},
38+
qml6-module-qtquick,
39+
qml6-module-qtquick-controls,
40+
qml6-module-qtquick-shapes,
41+
qml6-module-qt5compat-graphicaleffects,
42+
qml6-module-qtqml-workerscript,
43+
qml6-module-qtquick-templates,
44+
qml6-module-qtquick-effects,
45+
libdtk6declarative( =${binary:Version})
46+
Build-Profiles: <!nodtk6>
47+
Description: Deepin Tool Kit Qt Quick Controls 2 QML module (DTK6 with Qt6)
48+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
49+
.
50+
This package is built for DTK6 with Qt6.
51+
52+
Package: libdtk6declarative
53+
Architecture: any
54+
Depends: ${shlibs:Depends}, ${misc:Depends},
55+
libdtk6core
56+
Multi-Arch: same
57+
Build-Profiles: <!nodtk6>
58+
Description: Deepin Tool Kit Declarative library (DTK6 with Qt6)
59+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
60+
.
61+
This package contains the shared libraries.
62+
This package is built for DTK6 with Qt6.
63+
64+
Package: libdtk6declarative-dev
65+
Architecture: any
66+
Depends: ${shlibs:Depends}, ${misc:Depends},
67+
libdtk6declarative( =${binary:Version}),
68+
libdtk6core-dev,
69+
libdtk6gui-dev,
70+
libdtkcommon-dev,
71+
qt6-base-dev,
72+
qt6-declarative-dev
73+
Build-Profiles: <!nodtk6>
74+
Description: Deepin Tool Kit Declarative Devel library (DTK6 with Qt6)
75+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
76+
.
77+
This package contains the header files and shared libraries of DtkDeclarative.
78+
This package is built for DTK6 with Qt6.
79+
80+
Package: libdtk6declarative-doc
81+
Architecture: any
82+
Depends: ${misc:Depends}
83+
Build-Profiles: <!nodtk6 !nodoc>
84+
Description: Deepin Tool Kit Declarative Devel library (DTK6 with Qt6 Document)
85+
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
86+
87+
Package: dtk6-exhibition
88+
Architecture: any
89+
Depends: ${shlibs:Depends}, ${misc:Depends},
90+
libdtk6declarative( =${binary:Version}),
91+
qml6-module-qtquick-controls-styles-chameleon( =${binary:Version})
92+
Build-Profiles: <!nodtk6>
93+
Description: Deepin Tool Kit QML Controls example (DTK6 with Qt6)
94+
This package contains an application.
95+
.
96+
This package is built for DTK6 with Qt6.
97+
2498
Package: qml-module-qtquick-controls2-styles-chameleon
2599
Architecture: any
26100
Depends: ${shlibs:Depends}, ${misc:Depends}, qml-module-qtquick-shapes (>= 5.11.3), qml-module-qtgraphicaleffects,
27101
libdtkdeclarative5( =${binary:Version})
102+
Build-Profiles: <!nodtk5>
28103
Description: Deepin Tool Kit Qt Quick Controls 2 QML module
29104
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
30105

31106
Package: libdtkdeclarative5
32107
Architecture: any
33108
Depends: ${shlibs:Depends}, ${misc:Depends},
34-
libdtkcore5 (>= 5.6.12)
109+
libdtkcore5 (>= 5.6.12)
35110
Multi-Arch: same
36-
Description: Deepin Tool Kit Gui library
111+
Build-Profiles: <!nodtk5>
112+
Description: Deepin Tool Kit Declarative library
37113
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
38114
.
39115
This package contains the shared libraries.
40116

41117
Package: libdtkdeclarative-dev
42118
Architecture: any
43-
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdeclarative5( =${binary:Version})
44-
Description: Deepin Tool Kit Gui Devel library
119+
Depends: ${shlibs:Depends}, ${misc:Depends},
120+
libdtkdeclarative5( =${binary:Version}),
121+
libdtkcore-dev,
122+
libdtkgui-dev,
123+
libdtkcommon-dev,
124+
qtbase5-dev,
125+
qtdeclarative5-dev
126+
Build-Profiles: <!nodtk5>
127+
Description: Deepin Tool Kit Declarative Devel library
45128
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
46129
.
47130
This package contains the header files and shared libraries of DtkDeclarative
48131

49132
Package: libdtkdeclarative-doc
50133
Architecture: any
51134
Depends: ${misc:Depends}
52-
Description: Deepin Tool Kit Gui Devel library (Document)
135+
Build-Profiles: <!nodtk5 !nodoc>
136+
Description: Deepin Tool Kit Declarative Devel library (Document)
53137
Dtkdeclarative is base library of Deepin Qt/QtQuick applications.
54138

55139
Package: dtk-exhibition
56140
Architecture: any
57141
Depends: ${shlibs:Depends}, ${misc:Depends},
58142
libdtkdeclarative5( =${binary:Version}),
59143
qml-module-qtquick-controls2-styles-chameleon( =${binary:Version})
60-
Description: Deepin Tool Kit QML Controls example.
61-
This package contains a applicatioin.
144+
Build-Profiles: <!nodtk5>
145+
Description: Deepin Tool Kit QML Controls example
146+
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/*
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
usr/share/qt6/doc/*

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/*

0 commit comments

Comments
 (0)