Что, 'делают цель'?

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

Строго говоря, что, делают цель точно?

19
задан Lazer 16 February 2010 в 04:30
поделиться

4 ответа

Makefile-файлы выглядят так:

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 $@

...

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

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

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

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

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

Первая цель, которая появится в Makefile, будет вызвана, если вы просто наберете make . Согласно одному соглашению, эта цель называется «все». Тогда make будет таким же, как make all .

24
ответ дан 30 November 2019 в 03:52
поделиться

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

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

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

2
ответ дан 30 November 2019 в 03:52
поделиться

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

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

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

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

1
ответ дан 30 November 2019 в 03:52
поделиться

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

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

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

6
ответ дан 30 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: