提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
makefile是一种脚本编程语言,我们在使用时可以添加变量、控制结构语句和函数等,同时还可以执行shell命令。有了makefile我们就可以自动化编译,极大提升了项目当中编译环节效率。
一、makefile文件的组成内容
makefile文件主要由以下几个部分组成:
1. 显示规则 指明生成目标文件的方法和步骤,包括要生成的文件,生成依赖文件及生成命令等。
2. 隐式规则 由make工具自动推导时需要使用的规则。
3. 变量定义 类似于c语言的define,被使用时展开到对应的位置上。
4. 文件指示 include,#if,定义多行命令等
5. 注释 使用字符‘#’进行注释
二、基本规则
1.makefile规则的语法形式
targets:prerequisites
command
/...
targets:prerequisites;command
command
...
其中targets表示目标,目标分为实际生成的文件以及伪目标PHONY。 command表示命令,以tab开头。如果与依赖规则一起则用‘;’隔开。 prerequisites表示生成目标所需要依赖的文件。
特殊符号 | 意义 |
---|
$@ | 表示目标文件 | $^ | 表示所有的依赖文件 | $< | 表示第一个依赖文件 | $? | 表示比目标还要新的依赖文件列表 |
控制函数 | 功能描述 |
---|
$(info “text”) | 打印信息 | $(waring “text”) | 打印警告信息 | $(error “text”) | 打印错误信息并退出 |
TARGET = hello.out
CC = gcc
SRC_DIRS := ./src/hello.o
SRC_DIRS += ./add/add.o
SRC_DIRS += ./sub/sub.o
INC_DIRS := -I ./include
.PHONY:clean
$(TARGET):$(SRC_DIRS)
@echo compiling...
$(info "TARGET = $(TARGET)")
$(info "SRC_DIRS = $(SRC_DIRS)")
$(CC) -o $@ $^ $(INC_DIRS)
clean:
rm hello.out
总结
提示:这里对文章进行总结:
|