Tupfile中子目录的通配符

Wildcard for subdirectories in Tupfile

本文关键字:通配符 子目录 Tupfile      更新时间:2023-10-16

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

我的Tupfile规则目前如下:

:foreach src/*.cpp|>cxx_c_debug|>build/d/o/%B.o

:foreach src/dir/*.cpp|>cxx_c_debug|>build/d/o/目录/%B.o

:foreach src/dir2/subdir/*.cpp|>cxx_c_debug|>build/d/o/dir2/subdir/%B.o

您可以想象,有许多dirs和subdirs。我想对bolded目录结构使用某种通配符,而不是逐一枚举。有没有任何方法可以在不在每个目录中创建新的Tupfile的情况下实现这一点?

感谢

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

这是一个功能,在tup 0.7.4中提供,但尚未文档化。如果您将名为Tupdefault的文件放置在源树中的任何位置,它将在所有子目录中的Tupfile处起作用,包括您放置它的子目录。

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

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

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

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