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

Как я могу рекурсивно найти все файлы *.C в «Источнике» и добавить в

bld.program(source=HERE)?

вместо ручного перечисления:

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

Кроме того, как я могу найти все подпапки (желательно с *.h) и добавить, чтобы включить путь?

Должен ли я написать свои собственные функции поиска на python и просто передать их?

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

Вызовет ли это какие-либо проблемы с зависимостями при сборке?

В любой современной IDE такое мышление распространено: перетащите один файл в дерево исходного кода, и он автоматически добавится в список сборки. Спасибо!


person Vincent Alex    schedule 14.03.2014    source источник


Ответы (1)


Вы можете использовать подстановку для сканирования каталогов.

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

Просто найдите ant_glob в книге по waf.

person mkaes    schedule 14.03.2014