makefile文件编写
时间: 2023-11-08 17:04:17 浏览: 72
Makefile文件的编写
Makefile是一种用来编译程序的脚本文件,由一系列规则组成,每个规则表示一组命令,用来生成一个或多个目标文件。Makefile的格式是相对固定的,一般包含以下内容:
1. 宏定义:Makefile中的宏定义类似于C语言中的预处理宏,可以用来定义变量和常量。宏定义的语法为:
```
变量名 = 值
```
2. 目标定义:Makefile中的目标定义用来描述被编译的文件和编译命令。每个目标由一个或多个依赖项和一个命令序列组成,目标的格式为:
```
目标: 依赖项
命令1
命令2
...
```
3. 特殊目标:Makefile中有一些特殊的目标,用来执行一些特殊的任务。例如,all目标表示编译所有程序,clean目标表示删除所有生成的文件,等等。
下面是一个简单的Makefile示例:
```
CC = g++
CFLAGS = -Wall -O2
OBJS = main.o func1.o func2.o
all: program
program: $(OBJS)
$(CC) $(CFLAGS) -o program $(OBJS)
main.o: main.cpp
$(CC) $(CFLAGS) -c main.cpp
func1.o: func1.cpp
$(CC) $(CFLAGS) -c func1.cpp
func2.o: func2.cpp
$(CC) $(CFLAGS) -c func2.cpp
clean:
rm -f *.o program
```
这个Makefile定义了一个编译程序的规则,其中:
- 宏定义了编译器和编译选项;
- all目标表示编译所有程序,它的依赖项是program目标;
- program目标表示编译生成可执行文件,它的依赖项是$(OBJS),即所有的目标文件;
- 每个目标文件都有一个对应的规则,依赖于源文件,生成的命令是$(CC) $(CFLAGS) -c 源文件名;
- clean目标表示删除所有生成的文件。
通过执行make命令,Makefile会自动检查源文件的修改时间,判断哪些文件需要重新编译,并按照规则生成目标文件和可执行文件。
阅读全文