- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
bjam 初触
最近正在试用 bjam 来编译我的工程,网上到处找不到中文资料,手册又看的迷惑,连闷带猜的研究了半天,总算能编译我的工程了,写一点心得。
如果你使用过 boost 库,也许会对bjam的强大功能有一些认识,bjam是专门为boost库设计的make工具,因此功能超强(其实我觉得过强了,毕竟强大的另一半就是复杂)。?它的一些基础知识可以参考 Jam 使用说明 、 HYPERLINK /blog/55240 \o 永久链接:Bjam简明教程 Bjam简明教程 ,如果打算拜读官方文档,可以参考 HYPERLINK /blog/static/31004200733001310202 \o 查看原文:/blog/static/31004200733001310202 \t _blank Boost.Build v2官方文档导读。如果阅读本文有任何迷惑,请参考 HYPERLINK /tools/build/v2/doc/userman.pdf 官方文档,本人概不负责。
Jamroot 文件
一个bjam 工程是从 Jamroot 文件开始的,一个解决方案有且只能有一个Jamroot 文件(相当与VC 的 Solution 文件 *.sln)。编译一个工程时,bjam会自动查找这个文件,当前目录没有就到上一层目录,没有再去上一层寻找,直到找到。Jamroot 中的设置会传递给所有工程。
注意:由于bjam 以空字符来切分命令,; 前必须有一个空格。 = 前后也需要空格
Jamfile 文件
Jamfile 文件( 使用 bjam v2 规则的有 v2 后缀 ) 代表了一组工程,执行bjam 命令时,它会在当前目录下查找 Jamfile 文件,并执行之。一个典型的 Jamfile 文件如下:
exe hello : hello.cpp : includeboost threadingmulti ;
这个 jamfile 使用 hello.cpp 编译 hello.exe 文件,注意,头文件会自动被管理,不需要列出。其中参数的意义参看下文。
再看看另一个 jamfile:
project ??? : requirements include/home/ghost/Work/boost threadingmulti ;exe hello : hello.cpp ;exe hello2 : hello.cpp ;
这个文件使用同样的参数(在 project 中定义)来编译 hello.exe 和?hello2.exe。
目录
?bjam 使用目录来区分个个工程组,每个子目录下有且仅有一个 Jamfile 文件。
规则(rule)
事实上,JamFile 只提供了一些基本功能,复杂的功能大都是通过规则来实现的,规则基本上相当于我们熟悉的函数。调用方式一般是 rulename param1 : param2 ; 参数之间使用 : 分割(再次提醒,前后需要空格)
读取环境变量
import os?; ?BOOST_PATH = [ os.environ BOOST_PATH ] ;
?这段代码把环境变量 BOOST_PATH 读到变量 BOOST_PATH 中,以后用 $(BOOST_PATH) 使用这个变量。os 是模块名,environ 是一个规则。
注:import 会在当前和 bjam 目录查找并执行后缀为 jam 的对应模块文件,一般放在文件头上。
获取绝对路径
相对路径很多时候并不能正确工作,因此把相对路径转换为绝对路径来工作更合适。我们可以使用 path-constant 规则(rule)来完成这个工作,
path-constant? vername : ../../path ;
这行代码把相对路径(../../path)转换成绝对路径并保存在变量 vername 中。
引用工程
use-project 这个规则可以给一个工程设置一个别名,比如下面这段代码,把 ./core 目录下的工程(由 core 目录下的 jamfile 定义)定义为 /library-cc/core:
use-project /library-cc/core : ./core ;
如果需要编译的文件引用了这个工程,就可以直接使用 /library-cc/core:
exe?myproject?: hello.cpp /library-cc/core//core ;
这样编译 myproject 的时候,会把 ./core 目录下的 jamfile 文件中定义的 lib core?连接进来。
工程的基础配置
使用 project? 规则可以为多个工程设置基础配置。
参数说明
属性
名称
默认值
说明
Project id
none
none
工程的绝对名
您可能关注的文档
- ABB基本指.doc
- ABS融资模.ppt
- 8118077_2_下苇甸路线地质实习要点.ppt
- AC220 殊用途分类账.ppt
- ABB i-us智能家居系统解决方案.doc
- Access003教程(完整版).doc
- ACCESS体的概念和作用.ppt
- ACCESS010入门基础教程.ppt
- Access据库 表的创建与使用.ppt
- access据库应用教程3,使用查询.ppt
- 2025年金肯职业技术学院单招职业适应性测试题库带答案.docx
- 2025年钦州幼儿师范高等专科学校单招综合素质考试题库完美版.docx
- 2025年钟山职业技术学院单招职业适应性考试题库参考答案.docx
- 2025年金华职业技术学院单招职业技能测试题库附答案.docx
- 2025年闽南理工学院单招职业技能测试题库审定版.docx
- 2025年闽南理工学院单招综合素质考试题库审定版.docx
- 2025年闽南理工学院单招职业倾向性考试题库汇编.docx
- 2025年闽南理工学院单招职业倾向性考试题库推荐.docx
- 2025年闽北职业技术学院单招综合素质考试题库1套.docx
- 2025年长沙轨道交通职业学院单招职业技能考试题库一套.docx
文档评论(0)