【问题标题】:Boost jam, using absolute paths for dependenciesBoost jam,使用依赖的绝对路径
【发布时间】:2012-10-20 20:44:15
【问题描述】:

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

果酱:

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

谢谢!

【问题讨论】:

    标签: boost build bjam boost-build


    【解决方案1】:

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

    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 (link)

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

    终于可以在p2的Jamfile里写这个了:

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

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 2016-02-13
      • 2020-06-27
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多