Вот формат моих Makefiles для C программ:
## Variables
SRC = file1.c,
file2.c,
file3.c
OBJ = $(SRC:.c=.o)
CFLAGS = -g -W -Wall -Wextra -Werror
CPPFLAGS = -ImyIncludeFolder
NAME = my_program
## Functions
all: $(NAME)
$(NAME): $(OBJ)
$(CC) $(OBJ) -o $(NAME)
clean:
rm -r $(OBJ)
fclean: clean
rm $(NAME)
re: fclean all
Вероятно, это не лучший Makefile в мире - я имею в виду, определенно нет, но он делает свою работу.
Я открыт для любого конструктивного критицизма!
Как это работает:
Я не буду оскорблять ваш разум, рассказывая вам, как работают переменные.
Я просто объясняю неявные правила и переменные (насколько я их знаю).
Неявное правило $(OBJ)
создает .o
файлы.
Неявная переменная $(CC)
- это компилятор C (здесь это может быть gcc
)
Переменные CFLAGS
и CPPFLAGS
автоматически вызываются компилятором.
CFLAGS
содержит параметры компилятора (уровень отладки, подробный и т. Д.) *
CPPFLAGS
означает C PreProcessor Flags
и определяет ссылки на файлы, такие как заголовки.
Надеюсь, это поможет вам понять и создать мощный Makefile!