在 MySQL 的日常工作中,我将 SCons 添加到一个跨平台、多语言项目的构建系统,对结果非常满意。我们有 Unix、Windows 和 MacOS X 作为构建平台,以及 Java、C、PHP 和 Perl 作为编程语言,所有这些都在用 Python 编写的构建系统中良好地协同工作。
lighttpd 现在也走同样的路,解决了讨厌的 Autotools 依赖问题。
Autotools 令人头疼有两大原因:
- 版本不兼容
- 重建 Makefile 和 configure 脚本需要很长时间
- 通过 libtool 安装模块也需要很长时间
- 使用 m4 和 sh 作为最低公分母
等待安装过程完成是浪费时间。
Autotools 有什么优点?
- make distcheck 非常棒
- 完美集成到 RPM 构建中
- 交叉编译
- 对非开发者来说是自包含的
只要 SCons 中没有替代 Autotools ‘优点’的方案,我们就不会放弃 Autotools。它们在打包和测试方面做得非常出色。但对于 lighttpd 的构建和开发,我将使用 SCons。
SCons 构建系统已在 SVN 树中。它取代了 Autotools (automake, autoconf, libtool) 和 (g)make,成为一个中心工具。
你需要:
- Python 2.2.x 或更高版本
- SCons 0.96.1 或更高版本
$ cp config.py config.py-sample (adjust the features and paths) $ scons install
- 对库、头文件和函数的检查,将像以前的 ./configure 一样执行
- 主二进制文件被构建
- 模块被创建
- 所有东西都被安装
关于 SCons,你还应该知道什么?
$ scons -c [for a ‘make clean’]
$ scons check [for a ‘make check’]
$ cd src; scons -u [for a ‘make’ in the ‘src/’ directory]
在不久的将来,lighttpd 不会放弃 Autotools。到目前为止,它只在 GCC 和 Linux 上进行了测试。虽然需要一些时间才能将所有东西都移植到 SCons,但这是值得的。特别是对于那些还在与 Autotools 及其语法作斗争的新开发者,以及那些仅仅等待就耗费数天的老开发者来说。