Comments 9
Спасибо. А насколько серьезно вы разбирались с WAF — не сталкивались ли случайно с задачей изменения дерева целей при выполнении сборки?
В SCons у меня была проблема — нужно было дополнять/перестраивать дерево зависимостей в процессе сборки (т.е. уже после этапа сканирования файлов и построения исходного дерева зависимостей). Там с этим было плохо, и мне пришлось сгородить хак с самостоятельным отслеживанием дополнительных зависимостей.
Вот, интересно, не лучше ли с этим у WAF.
В SCons у меня была проблема — нужно было дополнять/перестраивать дерево зависимостей в процессе сборки (т.е. уже после этапа сканирования файлов и построения исходного дерева зависимостей). Там с этим было плохо, и мне пришлось сгородить хак с самостоятельным отслеживанием дополнительных зависимостей.
Вот, интересно, не лучше ли с этим у WAF.
На практике с описанной вами проблемой не сталкивался, но подозреваю, что в Waf это вполне достижимо. Взгляните на параграф 9.3 в е-книге. Сканнер в Waf срабатывает, насколько я понимаю, ближе к моменту непосредственного вызова инструмента.
Это то, что касается автоматического скана зависимостей. А просто поменять список исходников/целей — это в Waf обыденость и используется повсеместно. Просто заводим свой @feature, понимаем в какой момент его дёргать и обозначаем это декораторами @after, @before. Фича будет дёргаться в обозначенный момент с аргументом «генератор тасков». С ним то уже можно делать что угодно.
Это то, что касается автоматического скана зависимостей. А просто поменять список исходников/целей — это в Waf обыденость и используется повсеместно. Просто заводим свой @feature, понимаем в какой момент его дёргать и обозначаем это декораторами @after, @before. Фича будет дёргаться в обозначенный момент с аргументом «генератор тасков». С ним то уже можно делать что угодно.
Как насчет cmake?
Прошло много лет, вы бы не могли сказать к чему вы дошли сейчас? Покушаюсь на Waf пока с целью замены bash-скриптов. Специфика проекта такова, что С++ код уже собирается CMake, а вот Python пакеты, которые мы пакуем Nuitka и кладём собранные С++ библиотеки рядом, собираются bash-скриптами. bash-скрипты справляются на отлично (они хорошо написаны и достаточно небольшие и читабельные) до тех пор, пока наш зоопарк не уезжает на Mac OS и Windows, где поддержка кросплатформенности утилит вроде grep/sed начинает угнетать буквально с первых минут.
Прошу прощения за некрокомментарий :), но хочу уведомить, что PVS-Studio поддерживает Waf. Возможно, некоторым это будет интересно.
Sign up to leave a comment.
Обзор систем сборки SCons и Waf