Чтобы вывести список целей, которые будут переделаны, вы можете выполнить следующую команду:
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
Если вам нужно перечислить все зависимости (не только те, которые должны быть переделаны), см. этот ответ .