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