2010-10-18 8 views
7

Я пишу программу C, используя gcc в cygwin. Мой вопрос: как вы создаете make-файл? Я имею в виду, какое у него расширение файла? Я знаю, как писать простые правила, но я не могу сохранить файл в текстовом редакторе с правильным расширением? Невозможно найти информацию об этом ... Это непросто вопрос супер-новичка. Так что давайте начнем пылать. :-Pрасширение файла makefile

+0

Используйте любое расширение файла, которое вам нравится. Например, назовите его 'makefile', или вы можете назвать его' makefile.mytotallyawesomemakefiletypeoffile' – JoshD

+0

Ну на машине Linux обычно нет расширения вообще - это просто «makefile» или «Makefile». Вы можете называть это чем угодно и использовать опцию '-f', чтобы сказать« make », которая будет использоваться. – Pointy

ответ

1

Обычно они называются Makefile, или makefile. Нет расширения. Это просто соглашение.

Это не тривиально, чтобы написать Makefile, посмотреть руководство или учебник =)

0

Откройте ваш любимый текстовый редактор и создайте файл с именем Makefile.

Содержимое может варьироваться, но, если у вас есть программа под названием hello.c очень, очень простой Makefile скомпилировать это может быть:

hello: hello.c 
    gcc -Wall hello.c -o hello.exe 

После этого запустить запустить из cygwin оболочки:

$ ls 
hello.c Makefile 
$ make 
.... 

И ваш Makefile попытается скомпилировать hello.c. Если все пойдет, как и ожидалось, вы можете запустить программу hello.exe, выполнив следующую команду оболочки:

$ ./hello.exe 

Вот хороший учебник по Makefiles.

0

Файл makefile обычно называется только Makefile.

8

Идентификатор файла по умолчанию для файла makefile: Makefile; это имя, которое GNU Make ищет, когда вы запускаете его без каких-либо параметров. Аргумент -f позволяет указать альтернативное имя файла, если это необходимо.

+6

Фактически имена GNU make look for указаны [в руководстве] (http://www.gnu.org/software/make/manual/make.html#Makefile-Names): «он пробует следующие имена, чтобы : GNUmakefile, makefile и Makefile ". – bstpierre

+0

Достаточно честный. Но большинство людей, которые пишут make-файлы, используют это имя. –

11

Как вы используете Cygwin, который в свою очередь, означает, что вы используете GNU сделать, я процитировать relevant portion of the GNU make manual:

3,2 Какое имя чтобы дать вашему Makefile

по умолчанию, когда сделай выглядит для Makefile, он пытается следующие имен, в следующем порядке: GNUmakefile, Makefile и Makefile. Обычно вы должны вызывать ваш файл makefile либо makefile, либо Makefile. (Мы рекомендуем Makefile , так как она заметно вблизи начало каталога листинга, прямо рядом других важных файлов, таких, как README.) Первое имя проверено, GNUmakefile, не рекомендуется для большинства Makefiles. Вы должны использовать это имя , если у вас есть файл makefile, который является специфичным для GNU make, и не будет , понимаемый другими версиями make. Другие программы make look for makefile и Makefile, но не GNUmakefile.

[...]

Если вы хотите использовать нестандартное имя для вашего Makefile, вы можете указать имя Makefile с «-f» или «--file» вариант. Аргументы «-f имя» или «--file = name» указывают сделать чтение имени файла в качестве файла makefile. Если вы используете более одного параметра «-f» или «--file», вы можете указать несколько make-файлов . Все make-файлы эффективно объединены в указанном порядке. По умолчанию имена файлов makefile GNUmakefile, makefile и Makefile не проверяются автоматически, если вы указываете '-f' или '-file'.

0

У Makefiles обычно нет расширения. Их обычно называют «makefile» или «Makefile». Иногда, когда кто-то пишет сложный набор make-файлов, которые включают друг друга, включенные файлы получают расширение .mak, чтобы указать, что они являются make-файлами, даже если они не называются «makefile».

1

В тех немногих местах, где я видел расширений, используемых на именах Makefile они, как правило, были либо .make или .gmk, и даже тогда эти расширения, как правило, зарезервированы для Makefile фрагменты, которые включены искусными файлов данных один из имена по умолчанию.

Смежные вопросы