Чтобы найти правило all
, просмотрите эти три файла: Makefile.local
, make/def.mk
и congif.mk
. Если вы этого не видите, вы можете попробовать удалить директивы include
из основного make-файла одну за другой, чтобы увидеть, когда перестанет работать «all». Вы можете искать правило totalclean
таким же образом.
Скорее всего, сообщение "all" взято из правила all
и "totalclean" из правила totalclean
(но, как указывает jcomeau_ictx, не каждый, кто пишет make-файл, цивилизован - сообщения могут прийти откуда угодно и значат что угодно). Тот факт, что «totalclean» идет после «всего», говорит о том, что это рекурсия, а не зависимость.
Вы не сказали, что на самом деле делают эти make-файлы. Если вы хотите сократить время компиляции, повременив с процессом сборки, ваша единственная надежда - предотвратить ненужную компиляцию, что означает удаление ненужных зависимостей в make-файлах (и, возможно, ненужных связей в исходном коде).
EDIT:
Анкит, ты просишь простую формулу для сокращения ненужных зависимостей в большой устаревшей системе make-файлов; там просто нет одного. У нас недостаточно информации, чтобы дать вам подробные указания, но я сделаю снимок в темноте: похоже, что ваши make-файлы каждый раз запускаются totalclean
и перестраиваются с нуля. Это почти всегда не нужно. Так что ищите звонок на totalclean
и выключите его, посмотрите, не ускоряет ли это все.
EDIT:
Теперь у вас есть три проблемы: вы имеете дело с большой, плохо спроектированной системой make-файлов, вы новичок в make-файле, и менеджеры вмешиваются.
Да, используйте
make -j ...
. Это может ускорить процесс и почти наверняка не сможет навредить.
Вы можете попытаться объяснить чиновникам, что если вы запускаете
totalclean
каждый раз, вы должны затем перекомпилировать все, что вам нужно, и это устанавливает жесткий нижний предел времени сборки.
Вы можете искать ненужные зависимости в make-файлах. Нет простого и быстрого способа сделать это, потому что машина не может знать, какие предпосылки действительно необходимы. Если вы понимаете процесс сборки для конкретной цели, посмотрите на правило и оцените, необходима ли каждая предпосылка. Если вы не уверены, вы можете удалить обязательное условие из правила, сделать
totalclean
, сделать цель, а затем сделать
all
; если целевая сборка не удалась, то предварительное условие было необходимо, если оно выполнено успешно, но сборка
all
не удалась, то предварительное условие необходимо, но оно должно быть в другом правиле.