我很难写一个在文件中输出多行变量的makefile规则.
这是我的代码:
define VAR1
/dev d 755 - - - - -
endef
define VAR2
/test d 777 - - - - -
/test2 d 777 - - - - -
endef
VARS += $(VAR1)
VARS += $(VAR2)
all:
echo "$(VARS)" > test
Run Code Online (Sandbox Code Playgroud)
但是,由于我不知道的原因,回声无法告诉"未终止的引用字符串".我怎么能把文件放在单独一行上声明的每一行?
Eri*_*ski 24
如果将变量导出到shell并将其作为shell变量引用,而不是make变量,那么您将获得更好的运气:
define VAR1
/dev d 755 - - - - -
endef
define VAR2
/test d 777 - - - - -
/test2 d 777 - - - - -
endef
define VARS
$(VAR1)
$(VAR2)
endef
export VARS
all:
echo "$$VARS" > test
Run Code Online (Sandbox Code Playgroud)
请注意以下对makefile的调整:
define创造VARS,而不是一系列的+=任务,这使得它更容易得到的值之间的换行VAR1和VAR2.export VARS到你的makefile中,将变量推送到shell调用的环境中.$$VARS而不是$(VARS)取消引用它 - 将扩展留给shell而不是make,这将避免"Unterminated quoted string"错误.zwo*_*wol 11
GNU make 4.0增加了直接写文件的能力:
define VAR1
/dev d 755 - - - - -
endef
define VAR2
/test d 777 - - - - -
/test2 d 777 - - - - -
endef
define VARS :=
$(VAR1)
$(VAR2)
endef
all:
$(file > test,$(VARS))
Run Code Online (Sandbox Code Playgroud)
请注意,您仍然需要使用define来定义VARS,或者VAR1第一行的第一行将VAR2被标记为一行.另外,不要在$(file ...)构造中的逗号后面加一个空格,否则输出中会有一个前导空格!
| 归档时间: |
|
| 查看次数: |
9132 次 |
| 最近记录: |