LINUX.ORG.RU

Парсинг вывода make для построения списка исходников

 ,


1

5

Привет

Имеется несколько C-проектов с кучей общих исходников с makefile-ами, собирается ок.

Хочу сгенерировать списки .c и .h для каждого запуска `make target123`. Т.е. списки используемых исходников для каждого проекта.

Встречал такую приблуду, но сейчас не могу найти. Гугл молчит.

Пока пишу простую парсилку вывода `make -n`, может кто-то вспомнит, что есть готового.

Спасибо

Deleted

Пару раз приходилось ручками разбирать выхлоп make, чтобы перевести проект на другую систему сборки.

Подпишусь на топик. Если такая программа существует, то она будет полезной для меня тоже.

Пока пишу простую парсилку вывода make -n

Если ничего не найдёшь, выложи потом эти наработки. Будет отлично, если оно ещё сможет все дефайны вида -D<something> и пути к хедерам -D<path> собрать.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Я так думаю, что с парсингом make output-а получится только частный случай.

Вот, например, это ловит пути к -I директориям

make -n | sed 's/\B-I/\n&/g' | sed -n -E "s|.*\B-I *(.*/include)\b.*|\1|p" | sort | uniq

А это - компилируемые .c{,pp} файлы (которые с ключом "-c" связаны)

make -n | sed 's/\B-c/\n&/g' | sed -n -E "s|.*\B-c *(.*\.cp?p?)\b.*|\1|p" | sort | uniq

Но вот .h мне выловить не удалось, их просто не видно в выводе, в том числе и при V=1. Это особенности конкретного проекта, конечно

Товарищ ниже правильно подметил про strace!

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от utf8nowhere

Во, отличная идея. strace -f -o STRAGE_LOG.txt make отлично все показывает, только lstat отфильтровать остается.

Вероятно, так и поступлю, немного автоматизировав.

Выделю -I, выделю headers. А -D можно вытащить всё-таки из парсинга make!

Deleted
()

А gcc -M не подойдёт?

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.