bjam 初触.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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 工程的绝对名

文档评论(0)

mhk8089 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档