增加阻塞,使用绝对路径进行依赖

时间:2012-10-20 20:44:15

标签: boost build bjam boost-build

我的jam文件层次结构如下:

Jamroot中:

lib foo : <file>/SOME/RANDOM/FILE ;

build-project p1 ;
build-project p2 ;

p1中的Jamfile:

lib bar : bar.cpp

p2中的Jamfile:

lib bar2 : bar2.cpp ../p1//bar ..//foo ;

所以bar2依赖于bar和foo使用相对路径。

是否可以在Jamroot中编写单个命令,以便我可以在p2中的Jamfile中编写以下代码?

lib bar2 : bar2.cpp /p1//bar //foo ;

这样会更方便,因为您不再需要考虑相对路径。 我知道有use-project命令,但是1)我需要为每个子目录编写一个use-project,2)我不知道如何使用use-project声明根文件夹...

谢谢!

1 个答案:

答案 0 :(得分:1)

1)您可以使用use-project自动执行glob声明并循环播放:

for p in [ glob */[jJ]amfile ]
{
    use-project /$(p:P) : ./$(p:P) ;
}

:P用于获取父目录。有关变量扩展的更多信息here

2)没有使用use-project为当前项目分配项目ID,而是使用project完成:

project /root ; # common requirements and other useful things can go here if neededlink

我认为//foo不是目标引用的有效语法。另外,我认为你不能用一些不包含非空项目id(或路径)的目标引用来表示父项目中的目标。

最后你可以在p2的Jamfile中写这个:

lib bar2 : bar2.cpp /p1//bar /root//foo ;