makefile include 和 -include
时间: 2023-08-05 20:57:48 浏览: 83
在makefile中,include和-include都可以用来导入其他makefile文件。但是二者有一些不同:
1. include:如果导入的makefile文件不存在,则make会发出警告并继续执行。如果文件存在,则会导入其中的变量和规则。
2. -include:如果导入的makefile文件不存在,则make会忽略错误并继续执行。如果文件存在,则会导入其中的变量和规则。
因此,使用include时要确保导入的文件存在,否则会导致错误。而使用-include则可以处理不存在的文件,使makefile更加灵活。
相关问题
makefile include
在Makefile中,include关键字用于在当前Makefile中包含另一个Makefile或者一个设置环境变量的脚本。这样可以将一个大型的Makefile分成多个小的Makefile,方便维护和管理。当make读取到include关键字时,会暂停读取当前的Makefile,转去读取include所包含的文件,读取结束后再继续读取当前的Makefile文件。使用include命令可以将另一个文件的内容包含进当前的Makefile文件,类似于C语言中的include命令。如果Makefile中有以被包含文件为目标的规则,make会先使用规则对被包含文件进行更新,然后将更新后的文件内容包含进当前Makefile文件。[1][2][3]
怎么在 Makefile 中添加 -I/path/to/include 参数
在 Makefile 中,可以使用变量来存储编译器和链接器的参数。例如,可以定义一个变量 `CFLAGS` 来存储编译器的参数,包括 `-I/path/to/include`:
```
CFLAGS = -I/path/to/include
myprogram: main.o foo.o bar.o
gcc $(CFLAGS) $^ -o $@
main.o: main.c
gcc $(CFLAGS) -c $< -o $@
foo.o: foo.c
gcc $(CFLAGS) -c $< -o $@
bar.o: bar.c
gcc $(CFLAGS) -c $< -o $@
```
在上面的示例中,`CFLAGS` 变量包含了 `-I/path/to/include` 参数,然后在编译和链接时使用这个变量。例如,在编译 `main.o` 时,可以使用 `gcc $(CFLAGS) -c main.c -o main.o` 命令。同样地,在链接时,可以使用 `gcc $(CFLAGS) main.o foo.o bar.o -o myprogram` 命令。
使用变量可以方便地管理编译器和链接器的参数,也可以避免重复输入相同的参数。