Boost C++ Libraries Home Libraries People FAQ More


Chapter 29. Boost.Jam : 3.1.16

Rene Rivera

David Abrahams

Vladimir Prus

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Table of Contents 目錄

Introduction 簡介
Features 特性
Building BJam 構建 BJam
Using BJam 使用 BJam
Options 選項
Operation 操作
Language 語言
Lexical Features 詞彙特徵
Targets 目標
Rules 規則
Flow-of-Control 控制流
Variables 變量
Modules 模塊
Miscellaneous 雜項
Diagnostics 診斷
Bugs, Limitations 缺陷、限制
Fundamentals 基本原理
History 歷史

Boost.Jam (BJam) is a build tool based on FTJam, which in turn is based on Perforce Jam. It contains significant improvements made to facilitate its use in the Boost Build System, but should be backward compatible with Perforce Jam.
Boost.Jam (BJam) 是一個基於 FTJam 的構建工具,後者則基於 Perforce Jam。它包括一些重大的改進,以適用於 Boost 構建系統,不過它還是後向兼容於 Perforce Jam 的。

This is version 3.1.16 of BJam and is based on version 2.4 of Jam/MR:
這個 BJam 的版本為 3.1.16,它基於 Jam/MR 的版本 2.4:

+\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
This is Release 2.4 of Jam/MR, a make-like program. License is hereby granted to use this software and distribute it freely, as long as this copyright notice is retained and modifications are clearly marked. ALL WARRANTIES ARE HEREBY DISCLAIMED.

Jam is a make(1) replacement that makes building simple things simple and building complicated things manageable.
Jam 是 make(1) 的替代工具,它可以簡單地構建簡單的東西,可管理地構建複雜的東西。

Jam's language is expressive, making Jamfiles (c.f. Makefiles) compact.
Jam 的語言是具表現力的,使得 Jamfiles (與 Makefiles 相比) 更緊湊。

Jam handles header file dependencies automatically and on-the-fly.
Jam 可以即時地自動處理頭文件的依賴關係。

Jam is very portable: it runs on UNIX, VMS, Mac, and NT. Most Jamfiles themselves are portable.
Jam 具有很好的可移植性:它可以在 UNIX, VMS, Mac, 和 NT 上運行。大多數的 Jamfiles 本身也是可移植的。

Jam is unintrusive: it is small, it has negligible CPU overhead, and it doesn't create any of its own funny files (c.f. Odin, nmake, SunOS make).
Jam 是非介入式的:它很小,它的 CPU 開銷可忽略不計,並且它不會創建任何古怪的文件(與 Odin, nmake, SunOS make 相比)。

Jam can build large projects spread across many directories in one pass, without recursing, tracking the relationships among all files. Jam can do this with multiple, concurrent processes.
Jam 可以構建大型項目,可以一次展開多個目錄,無需反覆,並跟蹤所有文件的相互關係。Jam 可以多進程地並行地完成這一工作。

Jam isn't under the blinkin GNU copyright, so you can incorporate it into commercial products.
Jam 並不是 GNU 版權的,所以你可以將它合併到商業產品中。