Makefile变量添加前导空格不生效,该如何正确实现?
问题原因
你给出的写法不生效是因为Makefile在处理直接赋值的变量时,会自动截断值首尾的空白字符,你两次对SPACE赋值的操作最终得到的都是空值,无法生成需要的前导空格。
正确实现方式
用两个空变量作为边界,把需要的空格包裹在两个空变量中间,就能保留住空格字符:
# 先定义空变量作为边界 NULL := # 两个NULL中间的空格会被完整保留 SPACE := $(NULL) $(NULL) VIU_DIAG_SW_VERSION := $(SPACE)AJ
如果需要多个连续前导空格,只需要调整两个NULL中间的空格数量即可。
效果验证
你可以添加如下测试规则验证结果:
test: @echo "|$(VIU_DIAG_SW_VERSION)|"
执行make test后输出为| AJ|,可以看到AJ前的前导空格已经生效。
内容的提问来源于stack exchange,提问作者Deepak Kiran
相关产品推荐
相关产品推荐

