Tupfile中用于子目录的通配符

3
我想知道在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/dir/%B.o foreach src/dir2/subdir/*.cpp |> !cxx_c_debug |> build/d/o/dir2/subdir/%B.o ...
正如你所想象的那样,有许多“dir”和“subdir”。我想使用某种通配符来代替一个个列举它们。有没有一种方法可以在不为每个目录创建新的Tupfile的情况下完成这个任务?
谢谢。
1个回答

3
最简单的方法是使用一个名为 Tupdefault 的文件。
这是一项功能,可在 tup 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接