Печать целей, которые необходимо переделать - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно увидеть список целей (файлов), которые были бы переделаны, если я запустил команду make для указания цели c. Я думаю, это можно сделать, проанализировав выходные данные отладки утилиты make .

1 Ответ

0 голосов
/ 24 марта 2020

Чтобы вывести список целей, которые будут переделаны, вы можете выполнить следующую команду:

make -dn MAKE=: your_target | sed -rn "s/^ *Must remake target '(.*)'\.$/\1/p"

Если вы удалите MAKE=:, то также будут напечатаны цели для подмоделей.

К сожалению, некоторые файлы, импортированные в ваш Makefile с использованием директивы include, также будут перечислены. Они могут быть отфильтрованы с помощью следующего сценария оболочки (list-targs):

#!/bin/sh -e

dbg="`make -dn "$@"`"
all="`echo -n "$dbg" | sed -rn "s/^ *Must remake target '(.+)'\.$/\1/p"`"
mks="`echo -n "$dbg" | sed -rn "s/^ *Reading makefile '([^']+)'.*$/\1/p"`"
echo -n "$all" | grep -vxF "$mks"

Теперь вы можете увидеть цели, которые нужно переделать, используя эту команду:

list-targs MAKE=: your_target

Если вам нужно перечислить все зависимости (не только те, которые должны быть переделаны), см. этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...