Skip to content

Commit 9f13c8e

Browse files
committed
重构项目至CMake构建系统并适配64位系统
1 parent 3d29d16 commit 9f13c8e

File tree

4 files changed

+600
-628
lines changed

4 files changed

+600
-628
lines changed

CMakeLists.txt

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
cmake_minimum_required(VERSION 3.12)
2+
project(PowerDragableTabWidget)
3+
4+
# 设置CMake变量
5+
set(CMAKE_INCLUDE_CURRENT_DIR ON) # 包含当前目录的头文件
6+
set(CMAKE_CXX_STANDARD 11) # 根据.pro文件设置C++11标准
7+
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 要求使用指定的C++标准
8+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # 确保生成compile_commands.json
9+
10+
# 查找Qt包
11+
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Widgets REQUIRED)
12+
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets REQUIRED)
13+
message(STATUS "Qt版本: ${QT_VERSION_MAJOR}")
14+
15+
# 编译选项
16+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
17+
add_compile_options(-Wall -Wextra -Wpedantic)
18+
endif()
19+
20+
# 定义源文件列表
21+
set(SOURCES
22+
dragable_tab_window/dragabletabarea.cpp
23+
dragable_tab_window/dragabletabbar.cpp
24+
dragable_tab_window/dragabletabgroup.cpp
25+
main.cpp
26+
mainwindow.cpp
27+
)
28+
29+
# 定义头文件列表
30+
set(HEADERS
31+
dragable_tab_window/dragabletabarea.h
32+
dragable_tab_window/dragabletabbar.h
33+
dragable_tab_window/dragabletabgroup.h
34+
mainwindow.h
35+
)
36+
37+
# 定义UI文件列表
38+
set(FORMS
39+
mainwindow.ui
40+
)
41+
42+
# 生成UI头文件
43+
qt_wrap_ui(UI_HEADERS ${FORMS})
44+
45+
# 生成MOC文件
46+
qt_wrap_cpp(MOC_HEADERS ${HEADERS})
47+
48+
# 添加包含目录
49+
include_directories(
50+
${CMAKE_CURRENT_SOURCE_DIR}
51+
${CMAKE_CURRENT_SOURCE_DIR}/dragable_tab_window
52+
${CMAKE_CURRENT_BINARY_DIR} # 包含自动生成的UI头文件目录
53+
)
54+
55+
# 构建可执行文件
56+
add_executable(${PROJECT_NAME}
57+
${SOURCES}
58+
${HEADERS}
59+
${UI_HEADERS}
60+
${MOC_HEADERS}
61+
)
62+
63+
# 链接Qt相关库
64+
target_link_libraries(${PROJECT_NAME}
65+
Qt${QT_VERSION_MAJOR}::Core
66+
Qt${QT_VERSION_MAJOR}::Gui
67+
Qt${QT_VERSION_MAJOR}::Widgets
68+
)
69+
70+
# 安装可执行文件
71+
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
72+
73+
# 构建完成后,添加自定义命令复制compile_commands.json到项目根目录
74+
add_custom_command(
75+
TARGET ${PROJECT_NAME} POST_BUILD
76+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
77+
${CMAKE_BINARY_DIR}/compile_commands.json
78+
${CMAKE_SOURCE_DIR}/compile_commands.json
79+
COMMENT "复制compile_commands.json到项目根目录"
80+
)
81+
82+
# 定义安装目标路径(根据.pro文件中的设置)
83+
if(UNIX AND NOT APPLE AND NOT ANDROID)
84+
set(INSTALL_PATH "/opt/${PROJECT_NAME}/bin")
85+
elseif(QNX)
86+
set(INSTALL_PATH "/tmp/${PROJECT_NAME}/bin")
87+
else()
88+
set(INSTALL_PATH "/bin")
89+
endif()
90+
91+
# 更新安装目标路径
92+
install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_PATH})

PowerDragableTabWidget.pro

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

0 commit comments

Comments
 (0)