Document Linux build toolchain versions
This commit is contained in:
86
README.md
86
README.md
@@ -58,6 +58,92 @@ chengnan/
|
|||||||
|
|
||||||
> 注意:如果 OpenCV 没有适配当前 Linux 发行版的官方二进制包,不应退回源码编译安装。应改为寻找可信的预编译包、容器化二进制 SDK、发行版无污染解包方案,或更换依赖来源。
|
> 注意:如果 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 桌面环境中运行。
|
||||||
|
|
||||||
## 已清理的历史依赖
|
## 已清理的历史依赖
|
||||||
|
|
||||||
之前为了尝试构建曾产生过源码编译或非目标平台相关内容,目前已删除:
|
之前为了尝试构建曾产生过源码编译或非目标平台相关内容,目前已删除:
|
||||||
|
|||||||
Reference in New Issue
Block a user