Как «заставить» приложение узнать цель по умолчанию для сборки, если цель не указана? - PullRequest
153 голосов
/ 13 января 2010

Большинство приложений Linux скомпилированы с:

make
make install clean

Как я понял, make принимает имена целей сборки в качестве аргументов. Так что install является целью, которая копирует некоторые файлы, а после этого clean является целью, которая удаляет временные файлы.

Но какую цель будет make строить, если не указаны аргументы (например, первая команда в моем примере)?

Ответы [ 3 ]

202 голосов
/ 13 января 2010

По умолчанию он начинается с обработки первой цели, которая не начинается с '.' aka цель по умолчанию ; для этого может потребоваться обработка других целей, в частности, тех, от которых зависит первая цель. GNU make manual охватывает все это и удивительно легко и информативно читается.

146 голосов
/ 11 мая 2015

Чтобы сэкономить другим несколько секунд и избавить их от необходимости читать руководство, вот краткий ответ. Добавьте это в начало вашего файла make:

.DEFAULT_GOAL := mytarget

mytarget теперь будет целью, которая выполняется, если выполняется команда «make» и цель не указана.

Если у вас более старая версия make (<= 3.80), это не сработает. Если это так, то вы можете делать то, что упоминается, просто добавьте это в начало вашего файла make: </p>

.PHONY: default
default: mytarget ;

Ссылка: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html

31 голосов
/ 06 мая 2011

GNU Make также позволяет вам указать цель make по умолчанию, используя специальную переменную .DEFAULT_GOAL. Вы даже можете сбросить эту переменную в середине make-файла, в результате чего следующая цель в файле станет целью по умолчанию.

Действительно интересные, но эзотерические вещи. Но я согласен с Anon там - руководство по GNU Make вполне читабельно. Вы можете подумать, что вам не нужно знать большинство вещей в нем, но как только вы увидите действительно всеобъемлющий материал, вы по-настоящему оцените некоторые действительно интересные вещи, которые вы можете сделать с ним - манипулирование строками, функции файлов / каталогов, и т.д.

Ссылка: Руководство по Gnu Make - Специальные переменные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...