如何为所有3个C文件创建makefile



使用Makefile的初学者。我看了其他问题,但它们看起来都很复杂。我想使用Makefile编译所有的3.c文件。它们是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吗?

以下是C程序的Makefiles格式:

## 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(

CFLAGSCPPFLAGS变量由编译器自动调用。

  • CFLAGS包含编译器选项(调试级别、详细等…(
  • CPPFLAGS代表C PreProcessor Flags,并定义了类似于头的链接文件

希望这能帮助你理解并制作强大的Makefile!

最新更新