这个系列的文章《CMake构建学习笔记-目录》也写了挺久了,感觉再介绍下去就有点难讲,因为基本的操作都已经封装好了。因此就好好整理了目前的 C/C++ 程序自动化构建工具的脚本,将其提交到Github项目/GitCode项目中,以后的文章就会基于这个工具来论述了。本文是该项目的README文档。
一个轻量级、跨平台的 C/C++ 依赖库自动化构建工具。仅依赖系统自带脚本能力,无需额外安装构建框架或包管理器。
📦 核心优势:
适用于对构建过程需精细控制的场景,包括轻量级部署、自主定制、嵌入式开发及资源受限的 CI 环境。
本项目几乎无需额外部署环境,仅依赖系统自带的脚本引擎和基础构建工具:
虽然脚本本身无外部依赖,但编译 C/C++ 依赖库仍需以下基础工具:
平台 | 构建系统 | 编译器 |
|---|---|---|
💻 Windows | CMake | MSVC(推荐通过完整版 Visual Studio 安装) |
🐧 Linux | CMake | GCC(可通过 sudo apt install build-essential cmake 安装) |
🍏 macOS:当前版本暂未支持(未来可能扩展)。
另外,少数程序库需要安装一些额外的工具来帮助构建,已知的情况有:
库名 | 平台 | 工具 | 原因 |
|---|---|---|---|
openssl | Windows | perl,NASM | 帮助配置;优化性能 |
libjpeg | Windows | NASM | 优化性能 |
只要满足上述基本条件,即可直接运行对应平台的脚本,自动完成依赖库的配置、编译与安装。由于所有源码已内置于仓库中,整个过程完全支持离线执行。
本项目为不同平台提供专用脚本,位于对应子目录中。所有操作均通过命令行参数控制,支持灵活配置。
进入项目根目录下的 Windows 文件夹,在 PowerShell 中执行以下命令:
./BuildCppDependency.ps1 -List -alllibzip)./BuildCppDependency.ps1 `
-Generator "Visual Studio 16 2019" `
-InstallDir "$env:GISBasic" `
-SymbolDir "$env:GISBasic/symbols" `
-Install libzip🗂️ 符号文件管理:Windows 支持将生成的
.pdb调试符号文件自动复制到-SymbolDir指定目录,便于后续崩溃分析与调试。
参数 | 说明 | 默认值 |
|---|---|---|
-Force | 强制覆盖已存在的安装 | 0(不覆盖) |
-Cleanup | 是否清理编译中间文件 | 1(清理) |
进入项目根目录下的 Ubuntu 文件夹,在 bash 终端中执行命令:
./build.sh -list alllibzip)./build.sh -install libzip -installdir "$GISBasic"⚠️ 注意:确保环境变量
GISBasic已设置,或直接替换为具体路径(如/opt/mylibs)。
参数 | 说明 | 默认行为 |
|---|---|---|
-force | 强制覆盖已存在的安装 | 不启用(需显式添加) |
-noclean | 保留编译中间文件 | 默认清理(不加此参数即清理) |
暂未支持。
CMake 已成为当前 C/C++ 项目构建的事实标准,大多数开源库都已支持通过 CMake 进行编译。然而在实际开发中,C/C++ 依赖库的构建方式仍存在较大差异,常见情况包括:
nmake:部分传统项目依赖 Visual Studio 工具链Makefile:Unix 风格项目未适配跨平台✅ 无需担心这些差异:本项目已对上述各种构建方式进行封装和统一处理。用户只需按本文档操作,即可透明地完成各类依赖库的构建与安装。
如果您希望深入了解本项目的实现细节,或系统学习 CMake 构建体系,欢迎参考作者的系列文章:《CMake构建学习笔记-目录》。
RelWithDebInfo 模式编译——兼顾性能与调试信息,更适合缺乏完善测试环境的实际开发场景。.dll / .so 文件,以提升复用性与部署灵活性。本项目已在以下环境中完成构建与验证,相关二进制成果已发布供参考和使用:
📌 这些预构建产物可用于快速验证或作为离线部署的参考基线。建议在生产环境中仍优先使用源码构建,以确保环境一致性与可定制性。