Расширения не будет вообще, и файл называется Makefile, если вы хотите, чтобы GNU make автоматически его находил.
Make имеет автоматические переменные, которые сами по себе дают вам контроль над большей частью процесса сборки из C/ C ++ файлы.Эти переменные включают CC
, CPP
, CFLAGS
, CPPFLAGS
, CXX
, CXXFLAGS
и LDFLAGS
.Они будут управлять переключениями на препроцессор C / C ++, объект компилятора и платформы и компоновщик программы (программа, которая генерирует так называемый «исполняемый файл программы», или просто говорит: «программа, которую вы компилируете»).
GNU make также включает в себя множество неявных правил, специально разработанных для обеспечения возможности сборки программ из исходного кода C / C ++, поэтому вам не нужно писать их с нуля.
Например, даже без make-файл, если вы попытаетесь make foobar
, GNU Make попытается сначала собрать foobar.o
из foobar.c
или foobar.cpp
, если найдет один из них, вызвав соответствующий компилятор, а затем попытается собрать foobar
путем сборки (включая связывание) его частей из системных библиотек и foobar.o
.Короче говоря, GNU Make знает, как собрать программу foobar
даже без наличия make-файла - благодаря неявным правилам.Вы можете увидеть эти правила, вызвав Make с переключателем -p
, например, make -p
.
Некоторым людям нравится полагаться на базу данных неявных правил GNU Make, чтобы иметь короткие и короткие make-файлы, где только это относится к их проектууказано, в то время как некоторые люди могут пойти так далеко, чтобы отключить всю базу данных неявных правил (используя переключатель -r
) и получить полный контроль над процессом сборки, задав все с нуля.Я не буду комментировать обоснованность какой-либо стратегии, но будьте уверены, что оба работают в некоторой степени.