0

我有一个果酱文件层次结构如下:

果酱:

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 声明根文件夹...

谢谢!

4

1 回答 1

1

1)您可以使用和循环自动use-project声明:glob

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

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

2) 为当前项目分配项目 ID 不是用 完成的use-project,而是用 完成的project

project /root ; # common requirements and other useful things can go here if needed链接

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

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

lib bar2 : bar2.cpp /p1//bar /root//foo ;
于 2012-10-21T16:31:35.080 回答