| |
1. 如何跟踪make错误
1.1 利用tee
#make | tee make.log
利用tee工具可以很方便的,在监视make的执行过程中,同时也生成make的log
1.2 老方法:
因为编译时候错误太多,必须将错误定义到一个文件才行:
make > makeresult 2>&1
表示:把stdout和stderr都重定向到文件makeresult
make 1>>1.txt 2>>2.txt
这里错误都保存在2.txt
2 Makefile= := ?= +=这几个赋值运算符区别?
我们来做个简单的实验
新建一个Makefile,内容为:
ifdef DEFINE_VRE
VRE = “Hello World!”
else
endif
ifeq ($(OPT),define)
VRE ?= “Hello World! First!”
endif
ifeq ($(OPT),add)
VRE += “Kelly!”
endif
ifeq ($(OPT),recover)
VRE := “Hello World! Again!”
endif
all:
@echo $(VRE)
敲入以下make命令:
make DEFINE_VRE=true PT=define 输出:Hello World! // hsy75案:因为已经定义了,?=就不起作用了
make DEFINE_VRE=true PT=add 输出:Hello World! Kelly! // + 起作用
make DEFINE_VRE=true PT=recover 输出:Hello World! Again! // :则重新复制
make DEFINE_VRE= PT=define 输出:Hello World! First! // hsy75案:因为之前没有定义,所以?=起作用
make DEFINE_VRE= PT=add 输出:Kelly! // 之前没定义,+也起作用
make DEFINE_VRE= OPT=recover 输出:Hello World! Again!
从上面的结果中我们可以清楚的看到他们的区别了
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值,或者如果前面没有定义,那么就相当于新建了
2011-11 creat
2013-2 更新make basic