diff --git a/README.md b/README.md index 4fe9d1b..835669e 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,92 @@ chengnan/ > 注意:如果 OpenCV 没有适配当前 Linux 发行版的官方二进制包,不应退回源码编译安装。应改为寻找可信的预编译包、容器化二进制 SDK、发行版无污染解包方案,或更换依赖来源。 +## 编译工具链与版本声明 + +本项目当前已验证的 Linux 二进制工具链如下,全部位于项目目录内的 `tools/linux-build-env/`,不依赖全局安装的 Qt / OpenCV / CMake / Ninja,也不使用 Windows 编译工具链。 + +| 工具 / 依赖 | 当前版本 | 项目内路径 | 说明 | +| --- | --- | --- | --- | +| micromamba | 2.6.2 | `tools/micromamba/bin/micromamba` | 仅用于在项目目录内获取二进制包 | +| CMake | 4.3.3 | `tools/linux-build-env/bin/cmake` | CMake 最低要求 3.21,当前验证版本 4.3.3 | +| Ninja | 1.13.2 | `tools/linux-build-env/bin/ninja` | CMake 使用 `-G Ninja` 生成构建系统 | +| Clang / Clang++ | 22.1.6 | `tools/linux-build-env/bin/clang++` | 本项目指定使用项目内 Clang,不使用系统 GCC / G++ | +| Qt | 5.15.15 | `tools/linux-build-env/`、`third_party/qt-linux` | 使用 Qt Widgets / Qt Concurrent;CMake 也兼容 Qt6 | +| OpenCV | 4.13.0 | `tools/linux-build-env/`、`third_party/opencv-linux` | 使用 `core`、`imgproc`、`imgcodecs` 组件 | +| C++ 标准 | C++17 | `CMakeLists.txt` | `CMAKE_CXX_STANDARD 17` | + +> 说明:`third_party/qt-linux` 和 `third_party/opencv-linux` 是指向 `tools/linux-build-env` 的项目内软链接,方便保持 README 中的依赖目录语义;真正的二进制依赖仍统一存放在 `tools/linux-build-env/`。 + +## 如何构建 + +### 一键构建 + +在 Linux 中进入项目目录执行: + +```bash +cd /root/chengnan +./scripts/build-linux-binary.sh +``` + +脚本会自动完成: + +1. 检查项目内 Linux 二进制构建环境是否存在 +2. 如不存在,则下载项目内 `micromamba` 二进制工具 +3. 在 `tools/linux-build-env/` 内安装 CMake、Ninja、Clang、Qt、OpenCV 等二进制依赖 +4. 使用项目内 Clang / CMake / Ninja 配置并构建项目 +5. 输出 Linux 可执行文件: + +```text +build-linux/chengnan +``` + +### 分步构建 + +如果希望先准备依赖,再单独构建: + +```bash +cd /root/chengnan +./scripts/setup-linux-binary-deps.sh +./scripts/build-linux-binary.sh +``` + +### 手动等价构建命令 + +以下命令等价于脚本中的核心构建逻辑,适合调试 CMake 参数: + +```bash +cd /root/chengnan + +export PATH="$PWD/tools/linux-build-env/bin:$PATH" +export CMAKE_PREFIX_PATH="$PWD/tools/linux-build-env" +export PKG_CONFIG_PATH="$PWD/tools/linux-build-env/lib/pkgconfig:$PWD/tools/linux-build-env/share/pkgconfig:${PKG_CONFIG_PATH:-}" +export LD_LIBRARY_PATH="$PWD/tools/linux-build-env/lib:${LD_LIBRARY_PATH:-}" +export CC="$PWD/tools/linux-build-env/bin/clang" +export CXX="$PWD/tools/linux-build-env/bin/clang++" + +cmake -S . -B build-linux \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \ + -DCMAKE_C_COMPILER="$CC" \ + -DCMAKE_CXX_COMPILER="$CXX" \ + -DCMAKE_INSTALL_PREFIX="$PWD/dist-linux" + +cmake --build build-linux --parallel "$(nproc)" +``` + +### 运行程序 + +构建完成后运行: + +```bash +cd /root/chengnan +export LD_LIBRARY_PATH="$PWD/tools/linux-build-env/lib:${LD_LIBRARY_PATH:-}" +./build-linux/chengnan +``` + +如果在无桌面环境或 SSH 终端中运行,Qt 图形界面可能无法显示,需要在有 X11 / Wayland 图形会话的 Linux 桌面环境中运行。 + ## 已清理的历史依赖 之前为了尝试构建曾产生过源码编译或非目标平台相关内容,目前已删除: