Я прочитал некоторые учебные руководства относительно Make-файлов, но для меня это все еще неясно, для какого цель "все" поддерживает и что это делает.
Какие-либо идеи?
Сборка, как ее понимает Makefile, состоит из множества целей. Например, для сборки проекта вам может потребоваться
Если вы реализовали этот рабочий процесс с помощью makefile, вы могли бы создать каждую из целей отдельно. Например, если вы написали
make file1.o
, он построил бы этот файл только в случае необходимости.
Имя все
не зафиксировано. Это просто условное имя; all
target означает, что , если вы его вызовете, make построит все , что необходимо для создания полной сборки . Обычно это фиктивная цель, которая не создает никаких файлов, а просто зависит от других файлов. В приведенном выше примере для сборки все необходимо - это сборка исполняемых файлов, а другие файлы извлекаются как зависимости. Итак, в make-файле это выглядит так:
all: executable1 executable2
all
target обычно является первым в make-файле, поскольку, если вы просто напишете make
в командной строке без указания цели, он построит первая цель. И вы ожидаете, что это будет все
.
all
обычно также является целью .PHONY
. Подробнее здесь .
Не уверен, что это означает что-то особенное. Это просто соглашение о том, что вы предоставляете правило «все», и обычно оно используется для перечисления всех подцелей, необходимых для создания всего проекта, отсюда и название «все». Единственная особенность в этом заключается в том, что часто люди помещают его в качестве первой цели в make-файле, а это означает, что простой ввод «make» будет делать то же самое, что и «make all».
Цель "all" является примером фиктивной цели - на диске нет ничего с именем "all". Это означает, что когда вы делаете "make all", make всегда думает, что ему нужно собрать эту цель, и поэтому выполняет все команды для этой цели. Обычно это команды, которые собирают все конечные продукты, о которых знает makefile, но это может быть что угодно.
Другими примерами фиктивных целей являются "clean" и "install", и они работают точно так же.
Если вы еще не читали его, вам следует прочитать Руководство по GNU Make, которое также является отличным учебником.