当前位置: 首页 > news >正文

CMake构建学习笔记27-初步完成CC++自动化构建工具

这个系列的文章《CMake构建学习笔记-目录》也写了挺久了,感觉再介绍下去就有点难讲,因为基本的操作都已经封装好了。因此就好好整理了目前的 C/C++ 程序自动化构建工具的脚本,将其提交到Github项目/GitCode项目中,以后的文章就会基于这个工具来论述了。本文是该项目的README文档。

BuildCppDependency

一个轻量级、跨平台的 C/C++ 依赖库自动化构建工具。仅依赖系统自带脚本能力,无需额外安装构建框架或包管理器。

📦 核心优势:

  • 轻量化设计:无外部依赖,开箱即用
  • 源码内嵌:所有依赖库源代码已包含在仓库中,支持完全离线安装
  • 高度可定制:便于修改编译选项、打补丁或适配特定环境
  • 跨平台支持:一套逻辑,多平台兼容

适用于对构建过程需精细控制的场景,包括轻量级部署自主定制嵌入式开发资源受限的 CI 环境


🛠️ 部署

本项目几乎无需额外部署环境,仅依赖系统自带的脚本引擎和基础构建工具:

  • Windows:使用 PowerShell 脚本(系统预装)
  • Linux (Ubuntu):使用标准 Shell 脚本(bash)

虽然脚本本身无外部依赖,但编译 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

进入项目根目录下的 Windows 文件夹,在 PowerShell 中执行以下命令:

🔍 查看可构建的库列表

./BuildCppDependency.ps1 -List -all

📥 安装指定库(示例:libzip

./BuildCppDependency.ps1 `-Generator "Visual Studio 16 2019" `-InstallDir "$env:GISBasic" `-SymbolDir "$env:GISBasic/symbols" `-Install libzip

🗂️ 符号文件管理:Windows 支持将生成的 .pdb 调试符号文件自动复制到 -SymbolDir 指定目录,便于后续崩溃分析与调试

⚙️ 可选参数

参数 说明 默认值
-Force 强制覆盖已存在的安装 0(不覆盖)
-Cleanup 是否清理编译中间文件 1(清理)

🐧 Linux (Ubuntu)

进入项目根目录下的 Ubuntu 文件夹,在 bash 终端中执行命令:

🔍 查看可构建的库列表

./build.sh -list all

📥 安装指定库(示例:libzip

./build.sh -install libzip -installdir "$GISBasic"

⚠️ 注意:确保环境变量 GISBasic 已设置,或直接替换为具体路径(如 /opt/mylibs)。

⚙️ 可选参数

参数 说明 默认行为
-force 强制覆盖已存在的安装 不启用(需显式添加)
-noclean 保留编译中间文件 默认清理(不加此参数即清理)

🍏 macOS

暂未支持。


📚 说明

🔧 实现原理

CMake 已成为当前 C/C++ 项目构建的事实标准,大多数开源库都已支持通过 CMake 进行编译。然而在实际开发中,C/C++ 依赖库的构建方式仍存在较大差异,常见情况包括:

  • 原生支持 CMake:这是目前主流且推荐的方式
  • 仅支持 Windows 的 nmake:部分传统项目依赖 Visual Studio 工具链
  • 仅提供 Linux 下的 Makefile:Unix 风格项目未适配跨平台
  • 无标准构建脚本:需手动创建工程文件
  • 依赖包管理器(如 vcpkg、Conan):虽便捷,但可能带来环境耦合版本锁定问题

无需担心这些差异:本项目已对上述各种构建方式进行封装和统一处理。用户只需按本文档操作,即可透明地完成各类依赖库的构建与安装。

如果您希望深入了解本项目的实现细节,或系统学习 CMake 构建体系,欢迎参考作者的系列文章:《CMake构建学习笔记-目录》。

⚠️ 注意事项

  1. 依赖自动解析:安装某个库时,脚本会自动递归构建其所有依赖项。由于依赖关系本质为有向无环图(DAG),在复杂项目中仍需留意潜在的版本冲突循环依赖问题。
  2. 统一构建类型:所有库默认以 RelWithDebInfo 模式编译——兼顾性能与调试信息,更适合缺乏完善测试环境的实际开发场景
  3. 优先构建动态库:尽管跨版本二进制兼容仍是挑战,但 Windows 和 Linux 平台在其自身生态内已具备一定的动态库兼容能力,因此本项目默认生成 .dll / .so 文件,以提升复用性部署灵活性

✅ 测试

本项目已在以下环境中完成构建与验证,相关二进制成果已发布供参考和使用:

  1. 💻 Windows 11 (x64)
    使用 Visual Studio 2019 (MSVC) 成功构建,生成的预编译库已发布至另一个 GitHub 仓库:
    GISBasic3rdParty
  2. 🐧 Ubuntu (x64)
    基于 GCC 13 的构建验证已完成,Docker 镜像支持正在规划中

📌 这些预构建产物可用于快速验证或作为离线部署的参考基线建议在生产环境中仍优先使用源码构建,以确保环境一致性可定制性

http://www.jsqmd.com/news/46225/

相关文章:

  • 2025年11月中国液压翻板路障机厂家综合实力排行榜TOP10权威解析
  • 2025年知名的耐低温吸盘厂家最新推荐权威榜
  • (二)Gradle 依赖仓库及安全凭证安装
  • 小白动手实践mindYOLO微调模型
  • 眉山一对一辅导机构推荐:2026最新家教机构排名榜单公布,附家长真实反馈!
  • 2025年评价高的胶轮平板车TOP实力厂家推荐榜
  • 2025年比较好的施肥旋耕机一体机厂家推荐及选购参考榜
  • 孝感一对一辅导机构口碑推荐:2025最新教育机构权威排行榜单落地!贴合考点,提分更精准
  • 2026年六安一对一辅导机构权威测评排行榜:靠谱机构及实用方案推荐
  • 2025年评价高的大阪机场接送中文司机便捷度榜
  • 南充一对一家教辅导机构推荐,2025年家长真实体验+效果实测榜单公布!
  • 2025年比较好的35KV电缆分支箱厂家推荐及选择指南
  • 2025年质量好的双轨伸缩门厂家推荐及采购指南
  • format函数sql的细节
  • fortran for linux
  • format函数sql能做什么
  • 2025年质量好的职业生涯规划设备教育设备权威推荐榜
  • 德阳一对一辅导机构实力推荐,2025家教机构排行榜已出,附靠谱口碑名单和评价
  • 2025年热门的杭州实木全屋定制优质推荐榜
  • 绵阳一对一辅导机构推荐,2025家教机构权威排名榜单大公开!
  • 泸州一对一家教机构排行榜公布,2025最新辅导机构推荐,这几家赢得家长认可!
  • 永州一对一课外辅导机构推荐:2025年综合排行榜
  • 黄石一对一家教机构优选推荐,2025最新课外辅导机构口碑排行榜!
  • 福建三明一对一辅导深度评测:2025梅列、三元等区县家长首选的五家一对一辅导机构
  • 黄石一对一辅导平台推荐,2025最新千份家长问卷的权威机构排名榜单!
  • 实用指南:字符设备驱动开发流程与实战:以 LED 驱动为例
  • 2025年知名的日本旅行官方推荐榜
  • 攀枝花一对一辅导机构靠谱推荐,2025家长反馈满意度高的家教机构排名出炉!
  • 2025攀枝花一对一课外辅导机构推荐,附真实提分案例,家长信赖名单出炉!
  • 2025年靠谱的日本机场交通路线规划日本机场出行榜