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

问题描述 投票:18回答:4

我不是在说制作可移植的代码。这更多是分配问题。我有一个中型项目。它对通用库(例如,openssl,zlib等)具有多个依赖关系。它可以在我的机器上很好地编译,现在是时候将它发布给大家。

本质上是最好的建筑工程。我想为Windows,Linux,MacOSX等安装程序。我想做一个可下载的tar球,它将使代码与./configuremake(可能通过autoconf)一起工作。如果有一个make选项可以构建安装程序,这将是锦上添花。甚至可以交叉编译,因此可以在Linux中构建Windows安装程序。

最佳策略是什么?我可以在哪里花费最多的时间?应该主要关注autoconf还是有其他工具可以帮助您?

c++ build makefile autoconf
4个回答
19
投票

我建议CMake。优点:

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

我从未使用过自动工具,但是许多其他用户评论说cmake更易于使用。因此,KDE项目已从自动工具转移到cmake。


3
投票

我正在研究的产品与此没有太大不同。我们使用基于autoconf的构建系统,它运行良好。


0
投票

使用自动工具,大多数用户都熟悉它们(即他们知道要运行./configure && make && make install)


0
投票

尝试使用cqtdeployer。该实用程序可以搜索和收集应用程序的所有依赖项,并为其创建安装程序。

© www.soinside.com 2019 - 2024. All rights reserved.