Skip to content

Commit 8404a39

Browse files
committed
refactor: migrate build system from qmake to CMake
- Replace .pro file with CMakeLists.txt - Add cmake as build dependency - Keep same source structure and dependencies - Maintain translation handling - Update installation rules Log: Build with CMake
1 parent f3a97d8 commit 8404a39

File tree

3 files changed

+124
-84
lines changed

3 files changed

+124
-84
lines changed

CMakeLists.txt

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
# 设置项目名称和版本
4+
project(dde-device-formatter VERSION 1.0.0)
5+
6+
# 设置 C++ 标准
7+
set(CMAKE_CXX_STANDARD 17)
8+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
9+
10+
# 设置安装路径
11+
set(CMAKE_INSTALL_PREFIX /usr)
12+
13+
# 查找必要的包
14+
find_package(Qt5 COMPONENTS Core Gui Widgets Concurrent Network X11Extras DBus REQUIRED)
15+
find_package(PkgConfig REQUIRED)
16+
pkg_check_modules(PKGS REQUIRED
17+
x11
18+
udisks2-qt5
19+
dtkwidget
20+
dtkgui
21+
)
22+
23+
# 设置源文件
24+
set(SOURCES
25+
main.cpp
26+
view/mainwindow.cpp
27+
view/mainpage.cpp
28+
view/warnpage.cpp
29+
view/formatingpage.cpp
30+
view/finishpage.cpp
31+
view/errorpage.cpp
32+
app/cmdmanager.cpp
33+
dialogs/messagedialog.cpp
34+
app/singletonapp.cpp
35+
utils/udisksutils.cpp
36+
utils/fsutils.cpp
37+
)
38+
39+
set(HEADERS
40+
view/mainwindow.h
41+
view/mainpage.h
42+
view/warnpage.h
43+
view/formatingpage.h
44+
view/finishpage.h
45+
view/errorpage.h
46+
app/cmdmanager.h
47+
dialogs/messagedialog.h
48+
app/singletonapp.h
49+
utils/udisksutils.h
50+
utils/fsutils.h
51+
)
52+
53+
# 设置翻译文件
54+
set(TRANSLATIONS
55+
translations/${PROJECT_NAME}.ts
56+
translations/${PROJECT_NAME}_zh_CN.ts
57+
)
58+
59+
# 在文件开头部分添加自动 moc 处理
60+
set(CMAKE_AUTOMOC ON)
61+
set(CMAKE_AUTORCC ON)
62+
set(CMAKE_AUTOUIC ON)
63+
64+
# 添加可执行文件
65+
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
66+
67+
# 设置包含目录
68+
target_include_directories(${PROJECT_NAME} PRIVATE
69+
${CMAKE_CURRENT_SOURCE_DIR}
70+
${PKGS_INCLUDE_DIRS}
71+
)
72+
73+
# 链接库
74+
target_link_libraries(${PROJECT_NAME} PRIVATE
75+
Qt5::Core
76+
Qt5::Gui
77+
Qt5::Widgets
78+
Qt5::Concurrent
79+
Qt5::Network
80+
Qt5::X11Extras
81+
Qt5::DBus
82+
${PKGS_LIBRARIES}
83+
)
84+
85+
# 添加编译选项
86+
target_compile_options(${PROJECT_NAME} PRIVATE ${PKGS_CFLAGS_OTHER})
87+
88+
# 处理翻译文件
89+
if(CMAKE_BUILD_TYPE STREQUAL "Release")
90+
find_package(Qt5 COMPONENTS LinguistTools REQUIRED)
91+
92+
# 生成 .qm 文件
93+
qt5_add_translation(QM_FILES ${TRANSLATIONS})
94+
95+
# 添加自定义命令执行脚本
96+
add_custom_target(translations ALL DEPENDS ${QM_FILES})
97+
add_custom_command(TARGET translations POST_BUILD
98+
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/translate_ts2desktop.sh
99+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
100+
)
101+
endif()
102+
103+
# 安装目标
104+
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
105+
install(FILES ${QM_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/translations)
106+
install(FILES dde-device-formatter.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)

dde-device-formatter.pro

Lines changed: 0 additions & 66 deletions
This file was deleted.

debian/control

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@ Source: dde-device-formatter
22
Section: utils
33
Priority: optional
44
Maintainer: Deepin Packages Builder <[email protected]>
5-
Build-Depends:
6-
debhelper (>=9),
7-
pkg-config,
8-
qt5-qmake,
9-
qtbase5-dev,
10-
libqt5svg5-dev,
11-
libdtkwidget-dev,
12-
libdtkgui-dev,
13-
qttools5-dev-tools,
14-
qtdeclarative5-dev,
15-
deepin-gettext-tools,
16-
libdtkcore-dev,
17-
libdtkcore5-bin,
18-
libudisks2-qt5-dev,
5+
Build-Depends:
6+
cmake,
7+
debhelper (>=9),
8+
pkg-config,
9+
qt5-qmake,
10+
qtbase5-dev,
11+
libqt5svg5-dev,
12+
libdtkwidget-dev,
13+
libdtkgui-dev,
14+
qttools5-dev-tools,
15+
qtdeclarative5-dev,
16+
deepin-gettext-tools,
17+
libdtkcore-dev,
18+
libdtkcore5-bin,
19+
libudisks2-qt5-dev,
1920
Standards-Version: 3.9.8
2021
Homepage: http://www.deepin.org
2122

2223
Package: dde-device-formatter
2324
Architecture: any
24-
Depends:
25-
${shlibs:Depends},
26-
${misc:Depends}
25+
Depends: ${shlibs:Depends},
26+
${misc:Depends}
2727
Description: Device formatter
28-
A simple graphical interface for creating file system in a block device.
28+
A simple graphical interface for creating file system in a block device.

0 commit comments

Comments
 (0)