本文摘自php中文网,作者anonymity,侵删。
Bjam 是一个类似于Make的项目管理工具.它专门为Boost定制的编译管理器,它基于FTJam, FTJam是从Perforce Jam发展起来的.Bjam向后兼容Perforce Jam.Bjam工具由Boost.Jam项目维护.
当前Bjam的最新版本是:3.1.9(与Boost-1.31.0一起发布).它基于2.4 of Jam/MR.
Jam语言定义
词法
Jam认为所有的记号(Token)都由空白字符(blanks, tabs, or newlines)分隔.
包括符号(:)和(;)也必须用空白字符分隔.
例外:
由引号(")包围的记号中, 可以使用空白符号.
符号(/)可以转义引号和空白字符.
由{}包围的字符串,可以使用空白符号,并且认为只是一个字符串.
关键字,做为记号时,必须使用引号包围.
内建Rule语义
1.构造依赖关系
DEPENDS targets1 : targets2 ;
使用target1依赖于targets2, 如果targets2比targets1新, targets1会被重
建.
INCLUDES targets1 : targets2 ;
构造同位依赖, 使依赖于targets2的目标同时也依赖于targets1.
2.修改依赖关系
ALWAYS targets ;
LEAVES targets ;
NOCARE targets ;
NOTFILE targets ;
NOUPDATE targets ;
TEMPORARY targets ;
3.工具
ECHO args ;
显示参数
EXIT args ;
显示参数,并退出.
GLOB directories : patterns : downcase-opt
在directories中取出符合patterns的文件名.
MATCH regexps : list
从list中取出符合regexps的符号.
流程控制
for var in list { statements }
为list中的每个执行一次statements, var被设计为list元素的值.
if cond { statements }
[ else statements ]
显然,else部分是可以选的.
条件可以是:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
include file ;
使用jam读入file,并处理它.
这个过程在解析阶段发生,所以file不会被建造,也没有文件范围.
local vars [ = values ] ;
定义一个局部变量,在{}之外原变量的值会回存.
return values ;
设置返回值,注意在rule中,return并不跳出rule的执行过程.
1 2 3 4 5 6 |
|
根据value执行一次或零次statements. pattern可以是以下符号通配符
? 匹配一个任意字符
* 匹配零个或更多字符
[chars] 匹配chars中的任意一个字符
[^chars] 匹配不在chars中的任意一个字符
/x 匹配x(转义其它通配符)
while cond { statements }
在条件为真时,反复执行statement.
变量控制和内建变量
Jam变量是一个字符串列表,它的元素可能是0个,也可以是多个字符串.一个未定义的变量和
一个空变量(0个元素)没有区别.但是一个变量可以定义为含有多个空字符串.
变量可以通过$(variable)来取值
变量有"全局"或"目标专用"两种.目标专用的变量只在建造目标时取值.
变量定义的方式有以下几种.
1 2 3 4 5 6 |
|
前两种方式定义全局变量, 第三和第四种方式定义目标专用变量.
=号可以重写变量的内容.+=连接原有内容和新内容.
最后两种效果一致:在变量没有定义时,定义一个全局变量.
以上就是python中jam如何使用的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。