Может кто-нибудь показать мне, как создать этот очень простой make-файл? - PullRequest
1 голос
/ 17 мая 2011

Это на C, я запускаю UNIX через Putty и хочу создать Makefile.

Итак, у меня есть программа, которая находится только в одном файле "Recommender.c", и мне нужно сделать make-файл, который создает исполняемый файл под названием Recommender, используя функцию all. Часть, которую я не знаю, как это сделать, это то, что я компилирую Recommender.c, используя строку gcc Recommender.c -std = gnu99 Я не знаю, как сделать так, чтобы он выполнял часть -std = gun99. пожалуйста помоги? :)

Ответы [ 2 ]

4 голосов
/ 17 мая 2011
CFLAGS=-std=gnu99 -Wall -Wextra -O3

all: recommender

recommender: recommender.o

Обратите внимание, что расширение файла должно быть .c, если оно имеет расширение .cpp, ему потребуется CXXFLAGS вместо CFLAGS

Некоторое объяснение:

Файл make основан на зависимости, как вы можете видеть, вы можете установить свои переменные поверх файла make.Затем, когда вызывается программа make, она будет искать Makefile в текущем каталоге.

Поскольку действие по умолчанию - all, оно будет искать правило all.Когда он найдет правило all, он проверит, какие зависимости нужны в этом случае, правило / файл recommender, поэтому он снова начнет поиск правил и обнаружит, что ему нужен файл / правило recommender.o, но он не будетнайдите что-нибудь, теперь вот где происходит волшебство.

make достаточно умен, чтобы знать, что файл .o (объект) сделан из файла .c или .cpp (исходный код), так что теперь он будетначать поиск исходного файла в текущем каталоге.Это он делает, заменяя .o на .c, если он найдет файл, он скомпилирует его с помощью компилятора gcc, если он найдет файл .cpp, он скомпилирует его с помощью компилятора g ++.

Итак, теперь мы знаем, что мы можем просто добавить несколько исходных файлов в проект, добавив дополнительные объектные файлы в качестве зависимостей.

Теперь вам не нужно сначала создавать объектный файл, так как вы компилируете из одного источникаТакже вы можете удалить правило recommender: recommender.o и make попытается создать приложение recommender, скомпилировав recommender.c или .cpp

3 голосов
/ 17 мая 2011

Вам даже не нужен make-файл; CFLAGS="-std=gnu99" make recommender должно "просто работать".

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