我想知道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的情况下实现这一目标?
由于
答案 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