Как приложение "make" знает цель по умолчанию для сборки, если не указана цель?
Большинство приложений Linux скомпилированы с помощью:
make
make install clean
Как я понял, make принимает имена целей сборки в качестве аргументов. Таким образом, install
- это цель, которая копирует некоторые файлы, и после этого clean
является целью, удаляющей временные файлы.
Но какая цель будет make
строить, если аргументы не указаны (например, первая команда в моем примере)?
Ответы
Ответ 1
По умолчанию он начинается с обработки первой цели, которая не начинается с .
или цели по умолчанию; для этого может потребоваться обработка других целей, в частности тех, от которых зависит первая цель.
GNU Make Manual охватывает все эти вещи и удивительно легко и информативно читается.
Ответ 2
Чтобы сохранить остальные несколько секунд и сохранить их от необходимости читать руководство, вот короткий ответ. Добавьте это в начало файла make:
.DEFAULT_GOAL := mytarget
mytarget теперь будет целью, которая запускается, если выполняется "make" и не указана цель.
Если у вас установлена более старая версия make (< = 3,80), это не сработает. Если это так, то вы можете сделать то, что упоминает anon, просто добавьте это в верхнюю часть вашего файла make:
.PHONY: default
default: mytarget ;
Литература:
https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html
Ответ 3
GNU Make также позволяет вам указать цель make по умолчанию, используя специальную переменную с именем .DEFAULT_GOAL
. Вы даже можете сбросить эту переменную в середине файла Makefile, в результате чего следующая цель в файле станет целью по умолчанию.
Ссылка: Руководство по Gnu Make - Специальные переменные