Tupfile

时间:2016-05-18 07:12:24

标签: c++ wildcard rules subdirectory tup

我想知道Tupfile中是否有任何目录结构的通配符,例如%B.o ,它接受没有扩展名的输入文件名。

我的Tupfile规则目前看起来像这样:

  

:foreach src / * .cpp |> !cxx_c_debug |>建立/ d / O /%B.O

     

:foreach src / dir / * .cpp |> !cxx_c_debug |>建立/ d / O /的 DIR /%B.O

     

:foreach src / dir2 / subdir / * .cpp |> !cxx_c_debug |>建立/ d / O /的 DIR2 /子目录 /%B.O

     

...

您可以想象,有许多 dir subdir 。我想对粗体 ed目录结构使用某种通配符,而不是逐个枚举它们。有没有办法在不在每个目录中创建新的Tupfile的情况下实现这一目标?

由于

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用Tupdefault文件。

这是一个功能,可在第0.7.4节中找到,但尚未记录。如果您在源树中的任何位置放置一个名为Tupdefault的文件,它将在所有子目录中的Tupfile处起作用,包括您放置它的那个。

要使您的特定示例正常工作,Tupdefault文件可能如下所示:

include_rules
: foreach *.cpp |> !cxx_c_debug |> %B.o

您可能还需要使用tup的组功能来收集放置在项目根目录中的单个组中的所有目标文件,并使用该组将它们链接在一起。这是目前正在记录的另一个功能,但是由tup的作者Mike Shal在这里解释:

https://github.com/gittup/tup/issues/85#issuecomment-19423194