Я использую цепочку инструментов, в которой я не знаю имен всех промежуточных файлов.
например. Я знаю, что начинаю с foo.s и прошёл несколько этапов, чтобы получить foo.XXXX.sym и foo.XXXX.hex, скрытые глубоко в себе. А затем, запустив другие инструменты на foo.XXXX.hex и foo.XXXX.sym, я в итоге получаю что-то вроде final.results.
Но проблема в том, что я не знаю, что такое ХХХХ. Он получен из некоторых других параметров, но может быть значительно преобразован из них.
Теперь, после запуска инструмента / шагов, генерирующих foo.XXXX. {Sym, hex}, я теперь обычно сканирую весь каталог результатов в поисках foo. *. {Sym, hex}. То есть У меня есть код, который может распознавать промежуточные выходы, я просто не знаю точно, какими будут имена.
Я обычно использую make или scons - на самом деле, я предпочитаю scons, но моя команда очень предпочитает make. Я открыт для других инструментов сборки.
Что я хочу сделать, так это уметь сказать (1) «сделать final.results» или «scons final.results», (2) и заставить его сканировать частичное дерево; (3) выяснить, что, хотя он и не знает полный путь, он определенно знает, что ему нужно выполнить первый шаг, (4) после этого первого шага найдите и найдите файлы foo.XXX. *; (5) и включите их в дерево зависимостей.
т.е. Я хочу завершить построение дерева зависимостей после того, как сборка уже началась.
Друг достаточно расстроился из-за ограничений scons в этой области, что он написал свой собственный инструмент для сборки. К сожалению, это собственность.
Полагаю, что я могу создать первый граф сборки, скажем, в make со многими целями .PHONY, а затем, после того как я выполню первый шаг, сгенерировать новый make-файл с новыми именами, и первый make вызовет вновь сгенерированный второй make-файл. Кажется неуклюжим Есть ли более элегантный способ?