如何制作一个基于拉取请求关闭和打开功能的构建系统?

How to make a Build system that turns features off and on based on pull requests?

我正在为我在 gitlab 上的一个 c++ 项目寻找一个构建系统。我想创建一个类似于 linux 内核配置的构建,它允许在构建之前关闭或打开功能,我希望所有选项都基于我合并的功能分支。

示例: 在时间 t=0 时,我合并了特征 1、2 和 3。 在时间 t=1,我想创建一个仅使用功能 1 和 3 的发布。

我的所有功能都分成合并请求。我目前的方法是创建一个脚本来制作补丁并删除未选择的功能。一些替代方案包括在我的代码中为每个功能声明预处理器指令。

我想知道这样的工具是否已经存在,或者是否有我应该遵循的一般最佳实践。

这就是所谓的功能切换。

https://martinfowler.com/bliki/FeatureToggle.html