« 12K 的虚拟机 | 返回首页 | 收到一些读者的来信 »

让 bjam 支持 fx 文件的编译

我们新的项目已经不再使用 VC 的 IDE ,而当初选择一个合适的 make 工具很花了一番工夫。最开始想用 makefile , 大家都用的。后来觉得很繁琐,不是很适合我们这个项目。然后选择了<a href="http://www.perforce.com/jam/jam.html">jam</a>。(当然其间也试过 Ant 等,在此不表) 花了很长一段时间熟悉 jam 的语法,和 C 也极大的不同。好不容易学会点了,同事怂恿我试试 <a href="http://www.boost.org/tools/build/v2/">bjam</a>,方知道 boost 那帮人的确 BT ,把 jam 这个小玩具的功能发挥到此般。看了人家给 jam 扩展的脚本,自己也就打消了在 jam 的基础上弄出点东西的想法,还是直接拿来用吧。

在 bjam 的基础上扩展东西,其实说容易也不容易。扩展时不用写太多,但是要弄懂 bjam 的脚本到底怎么在工作是件很苦难的事。我想 jam 的思维方式也作实和 C 差的很远,以至于大多数程序员在写 jam 脚本的时候都容易犯错误。要么 bjam (boost build) 怎么这么长时间了还不太稳定呢。

这次,我需要用一个外部工具 fxc.exe 来编译 .fx 的脚本,目标文件是 .fxo 。我想做 3d 的程序员大多用过吧。这里贴出一个 jam 脚本,如果有一天你和我一样选用 bjam 的话,可能用的上。

----fx.jam--------
import type ;
import generators ;
import scanner ;

type.register FX : fx ;
type.register FXO : fxo ;

type.set-scanner FX : c-scanner ;

generators.register-standard fx.inline-file : FX : FXO ;

actions inline-file
{
fxc /nologo /T fx_2_0 /Fo $(<) $(>)
}
----------------------
用的时候在 project-root.jam 中加上 import fx ; 即可。

Comments

偶也想知道调试的问题怎么解决?

感觉scons比bjam还要容易使用,也更容易上手。可能是因为我习惯了使用python,所以才这么觉得。

一直有点不明白 如果没有IDE 调试怎么做 断点啊 单步啊 怎么做到?

可以方便自动测试和流程管理。当只有几个人coding的时候,用IDE还不觉得什么,要是有一帮人在coding的时候,bjam这种工具就很有用了。

问个比较弱的问题:-)放弃 IDE 用这种 make 工具的真正意义在哪里呢?方便 nightly build 吗?

Post a comment

非这个主题相关的留言请到:留言本