Makefile 遇到过的问题
目标变量的问题
- 目标变量是局部变量只在作用范围内有效,不会影响全局变量值。
- 目标作用范围的划分是tab键,不能是空格。
- target: prerequisite、ifeq、变量赋值等等,前面不能有tab。
那么这里就出现一个问题,就是目标下使用ifeq判断目标变量时是找不到目标变量的。
VAR=global
all:
\t$(info TAB VAR=$(VAR))
$(info VAR=$(VAR))
test: VAR=local
test: all
$ make
VAR=global
TAB VAR=global
make: “all”已是最新。
$ make test
VAR=global
TAB VAR=local
make: 对“test”无需做任何事。
暂时没有太好的解决办法,只能规避这个场景的出现。