一、makefile文件
1、makefile是什么?
makefile是一种可以自动化编译程序的脚本文件,它可以将源代码转化为可执行程序。
2、makefile的作用
makefile文件可以帮助我们避免手工编译程序时的重复性工作,减轻了程序员的负担。
二、makefile编程
1、makefile编程的基本语法
target:prerequisites [TAB]command
其中,target
是目标文件,prerequisites
是依赖文件,command
是需要执行的命令。
2、实例:
hello:hello.c [TAB]gcc -o hello hello.c
这个例子表示如果hello.c文件有修改,就执行gcc命令编译成可执行文件hello。
三、makefile编写入门教程
1、第一步:确定目标文件和依赖文件。
2、第二步:编写命令。
3、第三步:给出clean和all规则。
4、实例:
OBJS = hello.o TARGET = hello all: $(TARGET) $(TARGET): $(OBJS) [TAB]gcc -o $(TARGET) $(OBJS) hello.o: hello.c [TAB]gcc -c hello.c -o hello.o clean: [TAB]rm -f *.o $(TARGET)
这个例子中,all规则包含了$(TARGET)的依赖关系$(OBJS)和编译$(TARGET)所需要的命令。
四、makefile的功能
1、makefile的主要功能是自动化编译程序。
2、它可以根据文件的时间戳自动判断哪些文件需要重新编译。
3、另外,makefile还可以配合版本控制系统实现自动化部署。
五、makefile规则
1、伪目标规则
伪目标规则是指一个目标并不对应一个实际的文件,而是为了执行命令而存在的。
.PHONY:clean clean: [TAB]rm -f *.o $(TARGET)
2、通配符规则
通配符规则可以匹配多个文件,一般用来编译同一目录下的多个源文件。
$(TARGET): *.o [TAB]gcc -o $(TARGET) *.o
3、模式规则
模式规则可以快捷地编译同一类型的源文件,其语法为:
%.o: %.c [TAB]gcc -c $< -o $@
六、makefile菜鸟教程
1、菜鸟教程中常用的makefile变量
CC
:C语言编译器CFLAGS
:编译参数OBJ_DIR
:目标文件存储目录SRC_DIR
:源文件存储目录
2、实例
CC := gcc CFLAGS := -Wall OBJ_DIR := obj SRC_DIR := src TARGET := hello SRCS := $(wildcard $(SRC_DIR)/*.c) OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS)) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -rf $(OBJ_DIR)/*.o $(TARGET)
七、makefile经典教程
1、经典教程中常用的makefile命令
echo
:打印信息ifneq
:判断变量是否不相等ifeq
:判断变量是否相等include
:包含其他makefile文件
2、实例
CC := gcc CFLAGS := -Wall TARGET := hello ifeq ($(CC),clang) [TAB]CFLAGS += -Wno-format endif SRCS := $(wildcard *.c) OBJS := $(patsubst %.c,%.o,$(SRCS)) all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ %.o: %.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -f $(TARGET) $(OBJS) .PHONY: all clean
八、makefile自动变量
1、自动变量可以用来表示命令中的不同部分。
$@
:目标文件$^
:依赖文件$<
:第一个依赖文件
2、实例
CC := gcc CFLAGS := -Wall TARGET := hello SRCS := $(wildcard *.c) OBJS := $(patsubst %.c,%.o,$(SRCS)) all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ %.o: %.c [TAB]$(CC) $(CFLAGS) -c $< -o $@ clean: [TAB]rm -f $(TARGET) $(OBJS) .PHONY: all clean
九、简单的makefile
1、最简单的makefile
hello:hello.c [TAB]gcc -o hello hello.c
2、自动化编译
CC := gcc CFLAGS := -Wall TARGET := hello OBJS := hello.o all: $(TARGET) $(TARGET): $(OBJS) [TAB]$(CC) -o $@ $^ hello.o: hello.c [TAB]$(CC) $(CFLAGS) -c hello.c -o hello.o clean: [TAB]rm -f *.o $(TARGET)
以上就是makefile教程的详细阐述。希望对初学者有所帮助,也希望大家多多实践。