makefile 不打印 编译语句 技巧

我们定义makefile文件:
ifeq ($(VERBOSE),)
SILENCE=@echo "building: "$@ ;
else
SILENCE=
endif

再规则中:
all:test.o
     $(SILENCE) gcc -o prj test.o

这样如果在编译时,输入:make, 就不会打印 gcc -o prj test.o
输入:make VERBOSE=aa 就会打印                      

变量:

准确来说是make的内置变量,比如:CURDIR, SHELL等,不需要赋值,可以直接输出结果

echo $(CURDIR)

Link:

http://blog.sina.com.cn/s/blog_87edb138010172d6.html

如何知道这些变量的值呢?

make -p

输出当前Make的内部数据库,大家可以查到CURDIR等值。

 

输出变量信息:

在任何文件加上:

$(error problem $(Var))

就会输出变量$(Var)的结果,同时停止编译


subst 替换

$(subst \,/,$(WIND_BASE))

因为在windows下文件分隔符和Linux正好相反,需要进行替换,否则在Windows运行可能导致错误


你可能感兴趣的:(gcc,makefile)