Опция -link-report mxmlc создает файл, содержащий большую часть соответствующей информации, за исключением того, что он сообщает о поддельных именах файлов для внедренных активов и игнорирует включенные исходные файлы. Для того, чтобы собрать все, теперь у меня есть следующие в моей Makefile:
.deps/%.d: .deps/%.xml
# [email protected]: $<
grep '<script name=./' $< | cut -f2 -d'"' | cut -f1 -d'(' | cut -f1 -d'$$' | sort -u | sed -e "s|^$$(pwd)/||" > .deps/$*.f
grep '\.mxml$$' .deps/$*.f | xargs grep -H 'mx:Script source' | sed -s 's|/[^/]*.mxml:.*source="\([^"]*\)".*|/\1|;' > .deps/$*.i
for path in $$(grep -h '\.\(mxml\|as\|css\)$$' .deps/$*.[fi] | xargs grep '\bEmbed([^.)]' | \
sed "[email protected]\\(\\w\\+\\)/.*Embed([^'\")]*['\"][./]*\\([^'\"]*\\)['\"] *[,)].*@\\1/*/\\[email protected]"); \
do find */src -path "$$path"; done | sort -u > .deps/$*.e
cat .deps/$*.[fie] | sed -e "s|^|$(flashpath)$*.swf [email protected] : |" > [email protected]
# This includes targets, so should not be before the first target defined here.
built := $(wildcard .deps/*.xml)
include $(built:xml=d)
Вся mxmlc и CompC команды в Makefile теперь -link-отчет, генерирующий соответствующим образом, с именем файла .xml в каталоге .deps. Мне по-прежнему приходится искать файлы для директив Embed и Script, но сложная часть (определение того, какие классы входят в комплект) была сделана для меня. Я мог бы использовать настоящий парсер для каждого шага, но grep, sed и cut работают достаточно хорошо для файлов, как указано.
На мой взгляд, такое удобство было бы хорошим. Но все равно не будет никакого способа рассказать, что слушает события, отправленные определенным классом. – Robusto
@Robusto: Правда, график слушателей был бы полезен для многих вещей. В этом случае, однако, я пытался собирать зависимости для компиляции для Makefile, с дополнительным преимуществом поиска устаревших файлов для обрезки из репозитория. – eswald