希望重新实现从 bash/grep/sed/awk/(auto)make/configure 到更健全的构建工具链(例如 boost.build 等)

Posted

技术标签:

【中文标题】希望重新实现从 bash/grep/sed/awk/(auto)make/configure 到更健全的构建工具链(例如 boost.build 等)【英文标题】:Looking to reimplement build toolchain from bash/grep/sed/awk/(auto)make/configure to something more sane (e.g. boost.build, etc) 【发布时间】:2010-05-12 14:10:40 【问题描述】:

我目前维护着几个盒子,里面存放着一些松散相关的编码项目、数据库和存储库(从自制的 *nix 发行版到我的课堂笔记),由我自己和几个同样脸色苍白的书呆子朋友维护(全部所述聚宝盆的存储在SVN中)。

我们的大部分代码都在 C/C++/assembly 中(一些实用程序在 python/perl/php 中,我们不是 java 的忠实粉丝),在 gcc 中编译。我们的构建工具链通常由 make、bash、grep、sed 和 awk 组成。最近发现的 Makefile 几乎与它构建的程序一样长(以及每个人对我的神秘 sed 和 awking 的普遍焦虑)促使我寻求一种不那么痛苦的构建系统。

目前,我遇到的最强候选者是 Boost Build/Bjam 作为 GNU make 的替代品和 python 作为我们与构建相关的 bash 脚本的替代品。还有其他值得研究的 C/C++/asm 构建系统吗?我浏览了许多 make 替代品,但除了 Boost 之外,我没有找到任何由我知道的名称开发的。

(我应该注意到,能够从 svn 命令行工具(如 svnversion)轻松提取信息的能力很重要,并且足够灵活地配置 asm 项目的构建就像 c/c++ 项目一样容易)

【问题讨论】:

【参考方案1】:

我们最近在工作中开始在这里使用CMake。到目前为止,我对此非常满意。

【讨论】:

【参考方案2】:

scons 或cmake。

“跨平台” - 支持在 Windows 和 Linux 上编译。

Cmake 现在非常流行(例如 boost 使用它)。它为每个平台创建本机构建文件 - Makefiles(适用于 Linux)、VC++ 项目(适用于 Visual Studio)来自自定义文件 (CMakeList.txt)。 In 还可以创建 Eclipse 项目、KDevelop 项目等。由于它创建本地构建文件,您可以继续使用您使用的所有功能。例如,对于 Makefile,使用 ccache/colorgcc/distcc,对于 Visual Studio,使用 Visual Assist X。

我们在我们的项目中使用它并且对它很满意——自动依赖、简单的语法、健壮的构建。

Scons 是 python 基础系统,它自己执行构建。恕我直言,它不太受欢迎,对于大型项目来说仍然很慢。但对于 msmall 到 medium 项目可能是不错的选择。

【讨论】:

【参考方案3】:

您也可以使用基于 python 的构建系统 -- http://code.google.com/p/waf/

【讨论】:

以上是关于希望重新实现从 bash/grep/sed/awk/(auto)make/configure 到更健全的构建工具链(例如 boost.build 等)的主要内容,如果未能解决你的问题,请参考以下文章

从 NSOutlineView 中拖放

我想扩展dropEvent()(QListWidget),我应该完全重新实现它吗?

XSLT 希望删除属性然后重新匹配元素

尝试执行随机命令而无需重新启动机器人

仅在冷启动或设置更改时重新加载表数据

如何从 terraform 重新开始?