管理多个项目的元构建解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理多个项目的元构建解决方案相关的知识,希望对你有一定的参考价值。
我正在寻找有关软件的建议,这些软件在几天的搜索过程中没有引起我的注意。
是否有任何软件解决方案可以同时部署多个项目,这些项目在源代码构建包管理器(如ports,portages或nix)的水平上运行,但是可以在本地驻留?
至于细节,我们有几个松散连接的软件项目具有以下特征:
- 项目主要使用C / C ++和Python编写,但更多语言表示为次要混合(Haskell,Rust,Perl)
- 项目在git superprojects中组合在一起,并针对特定环境仔细调整某些构建/部署预设(并通过类似布尔类型的选项子集进行特定用途)
- 我们已经为C ++项目完成了精心设计的CMake构建脚本,这些脚本支持选项,构建配置,导出目标等等。现在切换它会很昂贵。
- 我们被迫处理各种Linux发行版(从Gentoo和Ubuntu到Debian和CentOS)。
我们需要针对各种环境的统一构建和部署工具。 CMake不能很好地与非编译语言集成(例如,本身不通过virtualenv支持本地Python安装)。
我不想改变我们已经开发的东西,而是希望以OS包管理器的方式使用它们。对于我的愿景,它应该是与所谓的meta-build tool非常相似的东西。事实上,Gentoo Portages非常接近:
- 使用简单的布尔选项轻松定制(useflags,profiles)
- 将建筑程序授权给可靠且可定制的工具,尤其是为此目的设计和测试(CMake,autotools,Bazel等)
- 提供更改目标编译器安装的能力,并使用标准化指令集以明确的声明方式指定构建过程。但Portage不能在本地运行(并且还有其他不相关的缺陷)。
在将整个构建系统切换到像Meson或Bazel之类的东西之前,我必须变得非常自信,或者我现在能找到的任何其他东西。
Update
更具体地说,我可以参考我们目前所做的工作。我们正在维持的超级项目的one处理特定的科学实验:
- 所有的子项目都是listed作为git子模块
- 一个简单的BASH-script维护整个build-install-deploy生命周期
- 引用具体环境的特定设置的预设表示为BASH sources,并由此维护shell脚本包含。
几天之后没有结果,我想出了根据我们已经获得的经验编写自己的解决方案,因为这些shell脚本活动。
对于类似的任务,Bob是在不久前开发的。如果你仍然需要一个构建系统,那么值得一看。有一些小的教程可用,以及一个复杂的基础示例从头开始构建一个linux。
基本上它只是一个受控执行bash脚本的环境,具有依赖性和变体处理,CI集成,IDE支持,..
看看Sparrow - Linux脚本平台,它支持项目层次结构和任务 - 可配置脚本,其中配置以Yaml,Json格式以声明方式进行。这有希望解决许多(如果不是全部)你在这里提到的需求。
披露 - 我是工具作者。
以上是关于管理多个项目的元构建解决方案的主要内容,如果未能解决你的问题,请参考以下文章