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

Use*_*er1 18 c++ autoconf makefile build

我不是在谈论制作便携式代码.这更像是一个分配问题.我有一个中型项目.它对公共库有几个依赖(例如openssl,zlib等).它在我的机器上编译得很好,现在是时候把它交给世了.

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

什么是最好的策略?我在哪里可以期待花费最多的时间?主要焦点应该是autoconf还是其他可以提供帮助的工具?

iai*_*ain 18

我会推荐CMake.好处:

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

我现在使用CMake,甚至是使用visual studio的简单测试项目.

我从未使用过autotools,但很多其他用户评论说cmake更容易使用.出于这个原因,KDE项目从autotools转移到cmake.

  • +1。许多大型操作系统库/应用程序都使用 CMake,因此它似乎非常有用。如果你也想在 Windows 上发布,那么比 autoconf/automake 更好。 (2认同)