Как создать make-файл для всех файлов 3 C? - PullRequest
0 голосов
/ 30 октября 2018

экстремальный новичок в использовании Makefile. Я посмотрел на другие вопросы, но все они кажутся очень сложными. Я хочу скомпилировать все 3 .c файлы с помощью Makefile. Это SwimMill.c, Fish.c и Pellets.c.

all: SwimMill Fish Pellets

SwimMill: SwimMill.c
    gcc -o SwimMill SwimMill.c

Fish: Fish.c
    gcc -o Fish Fish.c -lm

Pellets: Pellets.c
    gcc -o Pellets Pellets.c

После этого, что я набираю в командной строке, чтобы скомпилировать Makefile? Это make -f Makefile?

1 Ответ

0 голосов
/ 30 октября 2018

Вот формат моих 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!

...