Подтвердить что ты не робот

Что такое "целевая задача"?

Почему мне нужно сделать make target, прежде чем я смогу создать исходный код?

В частности, что именно сделать цель точно?

4b9b3361

Ответ 1

Make файлы выглядят следующим образом:

all: mybinary

mybinary: files.o it.o depends.o on.o
[tab]$(CC) $(CFLAGS) files.o it.o depends.o on.o -o mybinary

files.o: files.c files.h
[tab]$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o [email protected]

...

Это означает, что при вводе make all (сокращенное обозначение просто введите make), оно будет проверять, что mybinary target или файл обновлен. Чтобы сделать это, нужно убедиться, что mybinary является более новым, чем все файлы. Это зависит от .o и on.o. Если нет, то для создания mybinary он использует команды оболочки, указанные на следующей строке. Но прежде чем это сделать, сначала убедитесь, что files.o и т.д. Обновлены. Это означает, что они должны быть новее, чем files.c и files.h. Если нет, то он использует команды оболочки, указанные на следующей строке, для сборки files.o. Когда все файлы *.o обновлены, он может создать mybinary. Как только mybinary будет построен, все цели будут удовлетворены.

Цели обычно - это просто файлы. Формат блока:

target: list of dependency files
[tab]shell commands to build target if it older than any of its dependencies
[tab]more shell commands
[tab]still more

Цели также могут быть заданы с помощью подстановочных знаков, например %.c означает, что в оболочке вы вызывали *.c.

Некоторые цели являются "фальшивыми" целями, что означает, что они не соответствуют реальному файлу. Цель "все" такова. Так же и "чистая" цель (make clean). И так далее. Вам действительно не нужно или хотите создать файл с именем "все" или "чистый". Существуют различные способы указать, что цель является фальшивой.

Первой целью, которая должна появиться в Makefile, является та, которая будет вызываться, если вы просто наберете make. Одно из соглашений - назвать эту цель "все" . Итак, make будет таким же, как make all.

Ответ 2

A 'make target' - это файл, который вы хотите перестроить.

Make не может божественно строить то, что вы хотите построить, поэтому вы должны сказать это, неявно или явно, что он должен построить. Часто первая цель в файле - это имя, такое как "все" , и если вы запустили "make" без какой-либо явной цели, он построит первую цель, указанную в make файле. Однако некоторые make файлы не указывают какую-либо цель; то вы должны указать его в командной строке. Или, если вы не хотите, чтобы цель по умолчанию была создана, вы должны указать цель, которую хотите создать.

Цель также может быть "фальшивой", в терминах GNU make. То есть, это имя не существует, и правила его не создают, но его (фиктивная цель) зависит от ряда других файлов, у которых есть связанные с ними правила. Действительно, цель "все" обычно является фальшивой целью - в большинстве каталогов нет файла, называемого "все" .

Ответ 3

A makefile обычно включает код для создания вашей программы, установки вашей программы, очистки после этого и других вещей.

поэтому слово target может быть различными ключевыми словами, такими как all, install, clean и т.д.

Это способ сказать что-то. make all подразумевает все

Ответ 4

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

Стандартный синтаксис make /f makefile myprog.exe

Это говорит о том, чтобы построить myprog.exe, используя список файлов в make файле. Файл makefile по умолчанию равен makefile.mak, поэтому, если вы используете это имя, вам не нужно указывать его в командной строке.

myprog.exe здесь называется целью. Один трюк заключается в том, что вы можете поместить в make файл список инструкций сборки для несуществующего файла. Если вы затем скажете, что хотите создать эту цель, она запустит эту команду. Часто вы увидите что-то вроде make clean, у которого есть временный файл.