У меня есть действие, которое генерирует файлы покрытия, оно принимает некоторые параметры.bjam: использовать те же действия для нескольких правил
actions coverage {
echo coverage $(OPTIONS) >> $(<)
}
Мне нужно правило, чтобы установить $(OPTIONS)
переменную:
rule coverage (targets * : sources * : properties *) {
OPTIONS on $(targets) = ... # Get from environment variables
}
После того, как я сделал это, я могу использовать правило для создания файлов покрытия:
make cov.xml : : @coverage ;
То, что я хочу является вторым правилом (которое вычисляет переменную $(OPTIONS)
по-другому), которая использует те же действия. Возможно ли это без дублирования самого действия? Другими словами, можно ли связать два правила с тем же действием?
То, что я хочу что-то вроде этого:
actions coverage-from-features {
# AVOID HAVING TO REPEAT THIS
echo coverage $(OPTIONS) >> $(<)
}
rule coverage-from-features (targets * : sources * : properties *) {
OPTIONS on $(targets) = ... # Get from feature values
}
make cov2.xml : : @coverage-from-features ;
Очевидно, не повторяя действия команд себя (DRY и все такое).
Не работает для меня с "Boost.Build V2 (Milestone 12) Boost.Jam 03.1.19". Скопировал ваш код в файл Jamroot в пустой папке 'bjam; bjam cov.xml; bjam cov2.xml'. Произведенные каталоги сборки, но не выходные файлы, видимо, действие не было выполнено (подтверждено с -d + 2) –