为不同的编译器版本维护多个构建

Posted

技术标签:

【中文标题】为不同的编译器版本维护多个构建【英文标题】:Maintaining multiple builds for different compiler versions 【发布时间】:2015-11-26 12:39:40 【问题描述】:

我正在开发一个 C++ 库,并使用 Makefile 来编译和创建构建。我希望为不同的 gcc 编译器版本维护多个构建。最好的方法是什么?

【问题讨论】:

除了编译器版本之外,您希望构建之间有哪些不同? @Beta 没有其他区别 【参考方案1】:

如果您准备好使用 autotools,autoconf/automake 可以让您通过 out of tree builds 完成此操作。如果您将每个构建分开到自己的目录(而不是源目录)中,您可以配置任意数量的构建。

配置编译器和编译器选项通常是简单的 bash 命令行问题。

mkdir mingw-build
cd mingw-build
CXX=mingw32-g++ ../myproject/configure ...
cd ..

mkdir native-build
cd native-build
CXX=g++ ../myproject/configure ...
cd ..

【讨论】:

或者使用 CMake 做得更好 - 轻松维护针对多个目标的多个编译器。 @RichardHodges 自动工具是make 的前端。 cmakemake 的替代品。正如 OP 询问 make 我认为我的回答是相关的。 我完全同意您的回答是相关的。 CMake 也有 Makefiles 的生成器。总的来说,我发现它比 autotools 更简单、更灵活。 @RichardHodges 我该如何使用 cmake? @RichardHodges 我的目标是同时为几个编译器版本维护多个 .so 文件,并将所有 .so 文件签入存储库。 cmake/autotools 会达到目的吗?

以上是关于为不同的编译器版本维护多个构建的主要内容,如果未能解决你的问题,请参考以下文章

混合使用不同编译器版本构建的二进制文件

针对多个 Windows 版本

为多个库版本构建 Go 绑定?

如何防止基于我的 g++ 编译器版本的不同编译?

无法编译多个 Solidity 版本

c# 编译器指令在持续交付管道中使用