Я хотел бы написать файл SConstruct, который преобразует (например, все файлы JPEG в каталоге в PNG).
Думаю, у меня с Строителем все в порядке:
ConvToPNG = Builder(action = 'convert $SOURCE $TARGET',
suffix = '.png',
src_suffix = '.jpg')
env['BUILDERS']['ConvToPNG'] = ConvToPNG
Но тогда я не уверен, как составить список всех целей, которые нужно построить. Я могу сделать это в Python-у таким образом:
* +1007 *
И тогда, возможно, я буду использовать псевдоним для тех:
env.Alias('convert_all', pix_conversions)
Или же сделайте узел вручную и сделайте его Depends
в преобразованиях.
Дело в том, что, похоже, это то, для чего предназначены сканеры. Но я не мог заставить это работать хорошо. Я попытался создать Builder, который работал бы с каталогом и вызывать Scanner, который бы добавил несколько целей, но это не сработало, потому что внутреннее устройство SCons ожидает, что Builder будет работать с файлом. (или, по крайней мере, это то, что я почерпнул из сообщений об ошибках).
Есть ли более SCons-y способ сделать это?