diff --git a/.gitignore b/.gitignore index b65abfd..c9622ec 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ ui_*.h *.qmlc *.jsc Makefile* -*build-* # Qt unit tests target_wrapper.* diff --git a/BUILD_SCRIPTS.md b/BUILD_SCRIPTS.md new file mode 100644 index 0000000..4a6c105 --- /dev/null +++ b/BUILD_SCRIPTS.md @@ -0,0 +1,157 @@ +# Spark Store 编译脚本使用指南 + +本项目包含 4 个编译脚本,支持 Qt5 和 Qt6 并行编译。 + +## 脚本文件 + +### 1. **Qt5 编译脚本** (`build-qt5.sh`) +**功能**: 仅编译 Qt5 版本 +```bash +./build-qt5.sh +``` +**输出**: +- 编译目录: `build/qt5-Debug/` +- 可执行文件: `build/qt5-Debug/src/spark-store` + +### 2. **Qt5 编译和运行脚本** (`build-run-qt5.sh`) +**功能**: 编译 Qt5 版本并立即运行 +```bash +./build-run-qt5.sh +``` +**流程**: 编译 → 运行应用(前台) + +### 3. **Qt6 编译脚本** (`build-qt6.sh`) +**功能**: 仅编译 Qt6 版本 +```bash +./build-qt6.sh +``` +**输出**: +- 编译目录: `build/qt6-Debug/` +- 可执行文件: `build/qt6-Debug/src/spark-store` + +### 4. **Qt6 编译和运行脚本** (`build-run-qt6.sh`) +**功能**: 编译 Qt6 版本并立即运行 +```bash +./build-run-qt6.sh +``` +**流程**: 编译 → 运行应用(前台) + +## 快速开始 + +### 编译 Qt6 版本 +```bash +cd /home/momen/Desktop/spark-git/spark-store +./build-qt6.sh +``` + +### 编译并运行 Qt5 版本 +```bash +cd /home/momen/Desktop/spark-git/spark-store +./build-run-qt5.sh +``` + +### 编译两个版本(共存) +```bash +# 先编译 Qt6 +./build-qt6.sh + +# 再编译 Qt5 +./build-qt5.sh +``` + +## 脚本特性 + +✓ **自动检测**: 检查 Qt 工具是否安装 +✓ **并行编译**: 使用 `make -j$(nproc)` 利用所有 CPU 核心 +✓ **结果验证**: 编译完成后验证可执行文件 +✓ **错误处理**: 编译失败时立即停止并报错 +✓ **清洁构建**: 每次都从头开始(删除旧构建目录) + +## 构建目录结构 + +``` +spark-store/ +├── build/ +│ ├── qt5-Debug/ # Qt5 构建目录 +│ │ ├── src/ +│ │ │ └── spark-store (可执行文件) +│ │ └── spark-update-tool/ +│ │ └── spark-update-tool (可执行文件) +│ └── qt6-Debug/ # Qt6 构建目录 +│ ├── src/ +│ │ └── spark-store (可执行文件) +│ └── spark-update-tool/ +│ └── spark-update-tool (可执行文件) +├── build-qt5.sh +├── build-run-qt5.sh +├── build-qt6.sh +└── build-run-qt6.sh +``` + +## 环境要求 + +### Qt5 +- qmake 路径: `/usr/lib/qt5/bin/qmake` +- Qt 版本: 5.15.15+ + +### Qt6 +- qmake6 路径: `/usr/lib/qt6/bin/qmake6` +- Qt 版本: 6.8.2+ + +### 构建工具 +- GCC/G++ 编译器 +- make 工具 +- pkg-config + +## 故障排除 + +### 问题: 未找到 Qt qmake +**解决**: +```bash +# 检查 Qt 安装 +which qmake # 检查 Qt5 +/usr/lib/qt6/bin/qmake6 --version # 检查 Qt6 +``` + +### 问题: 编译出错 +**解决**: +1. 检查所有依赖是否安装 +2. 确保有充足的磁盘空间 +3. 查看完整的错误信息 +4. 尝试清理构建目录 + +## 高级用法 + +### 仅运行已编译的应用(不重新编译) +```bash +# Qt5 +./build/qt5-Debug/src/spark-store + +# Qt6 +./build/qt6-Debug/src/spark-store +``` + +### 后台运行应用 +```bash +# Qt5 后台运行 +./build/qt5-Debug/src/spark-store & + +# Qt6 后台运行 +./build/qt6-Debug/src/spark-store & +``` + +### 跳过编译直接运行 +```bash +# 如果已编译,可直接运行 +./build/qt6-Debug/src/spark-store +``` + + +## 脚本维护 + +这些脚本会在每次运行时: +1. 检查 Qt 工具可用性 +2. 清理旧的构建目录 +3. 生成新的 Makefile +4. 编译项目 +5. 验证编译结果 diff --git a/build-qt5.sh b/build-qt5.sh new file mode 100755 index 0000000..a8b8619 --- /dev/null +++ b/build-qt5.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Qt5 编译脚本 + +set -e + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BUILD_DIR="${PROJECT_ROOT}/build/qt5-Debug" + +echo "================================" +echo "Qt5 编译脚本" +echo "================================" +echo "" + +# 检查 Qt5 qmake +if ! command -v /usr/lib/qt5/bin/qmake &> /dev/null; then + echo "错误: 未找到 Qt5 qmake" + echo "请确保 Qt5 已安装: /usr/lib/qt5/bin/qmake" + exit 1 +fi + +echo "Qt5 版本:" +/usr/lib/qt5/bin/qmake --version +echo "" + +# 创建构建目录 +echo "创建构建目录: ${BUILD_DIR}" +rm -rf "${BUILD_DIR}" +mkdir -p "${BUILD_DIR}" +echo "" + +# 生成 Makefile +echo "生成 Makefile..." +cd "${BUILD_DIR}" +/usr/lib/qt5/bin/qmake "${PROJECT_ROOT}/spark-store-project.pro" -r CONFIG+=debug +echo "" + +# 编译 +echo "开始编译..." +make -j$(nproc) +echo "" + +echo "================================" +echo "Qt5 编译完成!" +echo "================================" +echo "" +echo "可执行文件位置:" +echo " 主应用: ${BUILD_DIR}/src/spark-store" +echo " 更新工具: ${BUILD_DIR}/spark-update-tool/spark-update-tool" +echo "" + +# 验证编译结果 +if [ -f "${BUILD_DIR}/src/spark-store" ]; then + echo "✓ 主应用编译成功" + ls -lh "${BUILD_DIR}/src/spark-store" +else + echo "✗ 主应用编译失败" + exit 1 +fi + +if [ -f "${BUILD_DIR}/spark-update-tool/spark-update-tool" ]; then + echo "✓ 更新工具编译成功" + ls -lh "${BUILD_DIR}/spark-update-tool/spark-update-tool" +fi + +echo "" diff --git a/build-qt6.sh b/build-qt6.sh new file mode 100755 index 0000000..6087b60 --- /dev/null +++ b/build-qt6.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Qt6 编译脚本 + +set -e + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BUILD_DIR="${PROJECT_ROOT}/build/qt6-Debug" + +echo "================================" +echo "Qt6 编译脚本" +echo "================================" +echo "" + +# 检查 Qt6 qmake +if ! command -v /usr/lib/qt6/bin/qmake6 &> /dev/null; then + echo "错误: 未找到 Qt6 qmake6" + echo "请确保 Qt6 已安装: /usr/lib/qt6/bin/qmake6" + exit 1 +fi + +echo "Qt6 版本:" +/usr/lib/qt6/bin/qmake6 --version +echo "" + +# 创建构建目录 +echo "创建构建目录: ${BUILD_DIR}" +rm -rf "${BUILD_DIR}" +mkdir -p "${BUILD_DIR}" +echo "" + +# 生成 Makefile +echo "生成 Makefile..." +cd "${BUILD_DIR}" +/usr/lib/qt6/bin/qmake6 "${PROJECT_ROOT}/spark-store-project.pro" -r CONFIG+=debug +echo "" + +# 编译 +echo "开始编译..." +make -j$(nproc) +echo "" + +echo "================================" +echo "Qt6 编译完成!" +echo "================================" +echo "" +echo "可执行文件位置:" +echo " 主应用: ${BUILD_DIR}/src/spark-store" +echo " 更新工具: ${BUILD_DIR}/spark-update-tool/spark-update-tool" +echo "" + +# 验证编译结果 +if [ -f "${BUILD_DIR}/src/spark-store" ]; then + echo "✓ 主应用编译成功" + ls -lh "${BUILD_DIR}/src/spark-store" +else + echo "✗ 主应用编译失败" + exit 1 +fi + +if [ -f "${BUILD_DIR}/spark-update-tool/spark-update-tool" ]; then + echo "✓ 更新工具编译成功" + ls -lh "${BUILD_DIR}/spark-update-tool/spark-update-tool" +fi + +echo "" diff --git a/build-run-qt5.sh b/build-run-qt5.sh new file mode 100755 index 0000000..6486e50 --- /dev/null +++ b/build-run-qt5.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Qt5 编译和运行脚本 + +set -e + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BUILD_DIR="${PROJECT_ROOT}/build/qt5-Debug" + +echo "================================" +echo "Qt5 编译和运行脚本" +echo "================================" +echo "" + +# 检查 Qt5 qmake +if ! command -v /usr/lib/qt5/bin/qmake &> /dev/null; then + echo "错误: 未找到 Qt5 qmake" + echo "请确保 Qt5 已安装: /usr/lib/qt5/bin/qmake" + exit 1 +fi + +echo "Qt5 版本:" +/usr/lib/qt5/bin/qmake --version +echo "" + +# 创建构建目录 +echo "创建构建目录: ${BUILD_DIR}" +rm -rf "${BUILD_DIR}" +mkdir -p "${BUILD_DIR}" +echo "" + +# 生成 Makefile +echo "生成 Makefile..." +cd "${BUILD_DIR}" +/usr/lib/qt5/bin/qmake "${PROJECT_ROOT}/spark-store-project.pro" -r CONFIG+=debug +echo "" + +# 编译 +echo "开始编译..." +make -j$(nproc) +echo "" + +echo "✓ 编译完成!" +echo "" + +# 运行应用 +SPARK_STORE="${BUILD_DIR}/src/spark-store" + +if [ -f "${SPARK_STORE}" ]; then + echo "================================" + echo "启动 spark-store(Qt5)" + echo "================================" + echo "" + "${SPARK_STORE}" +else + echo "错误: spark-store 未找到" + exit 1 +fi diff --git a/build-run-qt6.sh b/build-run-qt6.sh new file mode 100755 index 0000000..c04eace --- /dev/null +++ b/build-run-qt6.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Qt6 编译和运行脚本 + +set -e + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BUILD_DIR="${PROJECT_ROOT}/build/qt6-Debug" + +echo "================================" +echo "Qt6 编译和运行脚本" +echo "================================" +echo "" + +# 检查 Qt6 qmake +if ! command -v /usr/lib/qt6/bin/qmake6 &> /dev/null; then + echo "错误: 未找到 Qt6 qmake6" + echo "请确保 Qt6 已安装: /usr/lib/qt6/bin/qmake6" + exit 1 +fi + +echo "Qt6 版本:" +/usr/lib/qt6/bin/qmake6 --version +echo "" + +# 创建构建目录 +echo "创建构建目录: ${BUILD_DIR}" +rm -rf "${BUILD_DIR}" +mkdir -p "${BUILD_DIR}" +echo "" + +# 生成 Makefile +echo "生成 Makefile..." +cd "${BUILD_DIR}" +/usr/lib/qt6/bin/qmake6 "${PROJECT_ROOT}/spark-store-project.pro" -r CONFIG+=debug +echo "" + +# 编译 +echo "开始编译..." +make -j$(nproc) +echo "" + +echo "✓ 编译完成!" +echo "" + +# 运行应用 +SPARK_STORE="${BUILD_DIR}/src/spark-store" + +if [ -f "${SPARK_STORE}" ]; then + echo "================================" + echo "启动 spark-store(Qt6)" + echo "================================" + echo "" + "${SPARK_STORE}" +else + echo "错误: spark-store 未找到" + exit 1 +fi