Я хотел бы знать, есть ли какой-нибудь подстановочный знак для структуры каталогов в Tupfile, что-то вроде % B.o, который принимает входное имя файла без расширения.
Мои правила Tupfile в настоящее время выглядят так:
: foreach src / *. cpp |>! cxx_c_debug |> build / d / o /% B.o
: foreach src /реж/*.cpp |>! cxx_c_debug |> build / d / o /реж/%B.o
: foreach src /dir2 / подкаталог/*.cpp |>! cxx_c_debug |> build / d / o /dir2 / подкаталог/%B.o
…
Как вы можете себе представить, есть много режс и подкаталогs. Я хотел бы использовать какой-то подстановочный знак для смелыйструктура каталогов вместо того, чтобы перечислять их по одному. Есть ли способ сделать это без создания нового Tupfile в каждом из этих каталогов?
Спасибо
Самый простой способ будет использовать Tupdefault
файл.
Эта функция доступна в версии 0.7.4, но еще не документирована. Если вы поместите файл с именем Tupdefault
в любом месте вашего исходного дерева, он будет действовать на Tupfile
во всех подкаталогах, в том числе в том, где вы его разместили.
Чтобы ваш конкретный пример работал, Tupdefault
файл может выглядеть так:
include_rules
: foreach *.cpp |> !cxx_c_debug |> %B.o
Вам, вероятно, также понадобится использовать функцию групп tup, чтобы собрать все объектные файлы в одну группу, помещенную в корень вашего проекта, и использовать эту группу, чтобы связать их вместе. Это еще одна особенность, которая в настоящее время документируется, но она объяснена автором Tup Майком Шалом здесь:
https://github.com/gittup/tup/issues/85#issuecomment-19423194
Других решений пока нет …