Waf:递归收集源文件并包含路径

时间:2014-03-14 16:50:53

标签: c++ c recursion compiler-construction waf

我的C-gcc项目结构是:

\Project\wscript (only one in project)
\Project\build\
\Project\Source\Module_1\foo.c
\Project\Source\Module_1\foo.h
\Project\Source\Module_1\dummy\foo2.h
\Project\Source\Module_n\bar.c
\Project\Source\Module_n\any dept...\bar.h

如何递归查找“Source”中的所有* .C文件并添加到

bld.program(source=HERE)?

而不是手动列出它:

bld.program(source="foo.c bar.c...", includes='..\\Source ..\\Source\Module_1')

另外,如何查找每个子文件夹(最好是* .h)并追加包含路径?

我应该在python中编写自己的finder函数并传递它吗?

bld.program(source=SRCs_FOUND, includes=Paths_FOUND)

这会在构建中导致任何依赖性问题吗?

在任何现代IDE中,这种想法很常见,将一个文件拖到Source树中,它会自动添加到构建列表中。谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用globbing扫描目录。

bld.program(
    name = ...
    ....
    source = bld.path.ant_glob('**/Source/*.C')
)

只需在waf book中搜索ant_glob。