使用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
(
CFLAGS
和CPPFLAGS
变量由编译器自动调用。
CFLAGS
包含编译器选项(调试级别、详细等…(CPPFLAGS
代表C PreProcessor Flags
,并定义了类似于头的链接文件
希望这能帮助你理解并制作强大的Makefile!