c++ - 关于如何部署 C++ 代码以在任何地方工作的提示

我不是在谈论制作可移植代码。这更多的是分配问题。我有一个中型项目。它对公共(public)库有几个依赖项(例如 openssl、zlib 等)。它在我的机器上编译得很好,现在是时候将它公之于众了。

本质上是构建最好的工程。我想为 Windows、Linux、MacOSX 等制作安装程序。我想制作一个可下载的 tar 球,使代码与 ./configuremake 一起工作(可能通过自动配置)。拥有一个可以构建安装程序的 make 选项将是锦上添花。甚至可以交叉编译,以便可以在 Linux 中构建 Windows 安装程序。

什么是最好的策略?我可以期望在哪里度过最多的时间?主要关注点应该是 autoconf 还是有其他可以提供帮助的工具?

最佳答案

我会推荐 CMake .优点:

  • 使用它非常容易使用静态库、动态库、可执行文件及其依赖项构建简单和复杂的项目。
  • 它独立于平台,可为大多数编译器和 IDE 生成 makefile 和/或 ide 项目文件。
  • 它抽象了windows和unix之间的差异,例如“libShared.so”和“Shared.dll”被称为“Shared”(cmake处理每个平台的名称差异),如果Shared是你项目的一部分,它如果不是,则对依赖项进行排序,它假定它位于链接器路径中。
  • 它会调查用户系统中所需的编译器和第 3 方库,然后您可以选择在第 3 方库不可用时删除组件或显示错误消息(它附带宏以查找最常见的第 3 方库)。
  • 它可以从命令行或使用简单的 gui 运行,使用户能够更改上面发现的任何参数(例如编译器或第 3 方库的版本)。
  • 它支持自动执行常见步骤的宏。
  • 有一个叫 CPack 的组件可以让你创建一个安装程序,我认为这只是一个 make install 命令行的东西(我没用过)。
  • CTest 组件与其他单元测试库(例如 boost test 或 google test)集成。

我现在对所有事情都使用 CMake,甚至使用 Visual Studio 进行简单的测试项目。

我从未使用过自动工具,但许多其他用户评论说 cmake 更易于使用。出于这个原因,KDE 项目从 autotools 转移到了 cmake。

https://stackoverflow.com/questions/2486060/

相关文章:

android - 如何使用 Expo CLI 为 android 构建 64 位 native 代

android - 运行 Android Studio gradle build 时如何使用所有 C

c - 在配置脚本中处理 CFLAGS 的最佳实践?

android - 在 Gradle 产品 flavor 上调试签名配置

android - 通过 TeamCity 为 Android 持续集成。首选工具?

android - 管理 Android 应用商店(谷歌/亚马逊/等)的代码/构建?

gradle - 启动一个 Gradle 守护进程,1 个忙碌和 6 个停止的守护进程无法重用,使用

xcode - 学习和理解 Xcode 构建系统

eclipse - noClassDefFoundError 使用 Eclipse 的 Scala

msbuild - Mercurial/Kiln + MSBuild + MSTest 的持续集成建