Определите все файловые зависимости в процессе сборки, который использует make-файлы и ant-скрипты - PullRequest
3 голосов
/ 28 июля 2010

Я пытаюсь понять процесс сборки кодовой базы.В проекте используются как autoconf (настроить скрипты, генерирующие make-файлы), так и Maven.

Я бы хотел иметь возможность идентифицировать все файловые зависимости в проекте, чтобы для любого выходного файла, который в конечном итоге генерировалсяпостроить, я могу определить, как это было на самом деле.В конечном счете, я хотел бы сгенерировать диаграмму, используя что-то вроде graphviz для визуализации зависимостей, но сейчас я просто хочу их извлечь.

Есть ли какой-нибудь автоматизированный способ сделать это?Другими словами, учитывая некоторые make-файлы и файлы Maven или ant XML и имя цели верхнего уровня, есть способ идентифицировать все файлы, которые будут сгенерированы, программы, используемые для их генерации, и входные файлысвязанные с этими программами?

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Electric Accelerator и ClearCase - две системы, которые делают это, выполняя сборку и наблюдая за тем, что она делает (предположительно, перехватывая вызовы операционной системы).Это имеет преимущество работы для любого инструмента и не зависит от глючных make-файлов (подсказка: они все глючные).

Это, пожалуй, единственный надежный способ для нетривиальных make-файлов, поскольку все они делают такие вещи, каксоздание новых правил make на лету или поведение, которое зависит от наличия на диске файлов, которые явно не указаны в правилах.

0 голосов
/ 15 сентября 2010

Я не знаю о стороне maven, но как только вы ./configure d проекта, вы можете выполнить вывод make -pd (make --print-data-base --dry-run), чтобы найти зависимости.Это, вероятно, будет более раздражающим, если оно основано на рекурсивном make, но все еще управляемо.

Обратите внимание, что если вы используете automake, он вычисляет подробные зависимости как побочный эффект компиляции, поэтому вы не получитевсе зависимости от заголовков #include d до полной сборки.

...