Makefile中的include语句是把被包含的文件的内容包含当前文件中,类似于C语言中的include关键词。
但是使用时要特别注意避免陷入无限循环的死循环中。
来看下面这个有问题的例子:
顶层目录有文件Makefile和文件Makefile.build,
文件Makefile的内容如下:
str1 := MyNameIsSuWenhao
TOPDIR := $(shell pwd)
all:
make -C ./ -f $(TOPDIR)/Makefile.build
文件Makefile.build的内容如下:
include Makefile
# 打印str1的值
myprint:
@echo "str1's value is: $(str1)"
运行命令:make
时,我本意是想打印出变量str1
的内容,但是构建程序会一直循环输出下面两条信息:
make[484]: Entering directory '/home/book/mycode/makefile_test_01'
make