Вы должны использовать make -d
, чтобы увидеть все, что делает make, и попытаться выяснить, где идет время. Одной из распространенных причин длительных сроков выполнения являются правила match-anything, которые используются для определения того, нужно ли перестраивать make-файл. МОЖЕТ быть удалена с помощью большинства правил «матч-что-либо»; они редко нужны больше.
Вы можете добавить это к вашему Makefile и посмотреть, если это помогает:
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
И, если вам не нужно автоматически создать Makefile можно добавить:
Makefile: ;
(также добавьте туда какие-либо встроенные make-файлы, которые вам не нужно автоматически создавать).
ETA кажется ваш реальный вопрос можно резюмировать, «почему может занять намного больше времени, чтобы начать на Windows, чем на Linux, и что я могу сделать, чтобы исправить это, не меняя Makefiles?»
Ответ: ничего. Make делает ровно столько же работы как в Windows, так и в Linux: в Windows нет дополнительных правил или процедур, которые можно было бы удалить. Проблема в том, что Windows NTFS работает медленнее, чем обычные файловые системы Linux для этих поисков. Я не знаю системных настроек и т. Д., Которые исправит эту проблему. Ваш единственный выбор - заставить make делать меньше работы, чтобы он был быстрее, и единственный способ сделать это - удалить встроенные правила, которые вам не нужны.
Если проблема вы действительно не хотите редактировать фактические мейкфайлы, что достаточно просто решить: просто писать правила выше в небольшой отдельный Makefile, может быть что-то вроде speedup.mk
, а затем установить переменную окружения MAKEFILES=speedup.mk
перед вызовом делать. Make будет анализировать этот makefile и без необходимости изменять какие-либо make-файлы.
Вопрос в том, почему это занимает много времени, чтобы начать. По умолчанию правила и переменные, безусловно, имеют значение, но есть много других вещей. Cygwin и MinGW не ускоряются ни с чем из того, что я видел/слышал, чтобы это не помогло. Является ли make-файл делать что-нибудь интересное с '$ (shell)' или '$ (wildcard)' и т. Д.? –
Я прочитал связанный вопрос. Это указывает на * одну вещь, которая может ускорить запуск. Это далеко не единственное, что может замедлить обработку. Объем работы делает (даже если здание не требуется) зависит от содержимого make-файла. –