Makefile 当变量定义有尾随空格时,如何防止GNU Make执行
我的makefile中有一个简单的变量定义:Makefile 当变量定义有尾随空格时,如何防止GNU Make执行,makefile,gnu,gnu-make,Makefile,Gnu,Gnu Make,我的makefile中有一个简单的变量定义: THIS := ~/edan 它在行中有尾随空格 后来,我用这个定义了另一个变量: WARES := $(THIS)/wares 实际定义的变量是/home/directory/edan 然后,makeclean规则被删除了/home/directory/edan,而不是我想要的 如果一行有尾随空格,如何防止生成文件执行 尽管您可以编写Makefile,以便它检查变量是否有尾随空格,并在找到一些空格时退出,但是有更好
THIS := ~/edan
它在行中有尾随空格
后来,我用这个定义了另一个变量:
WARES := $(THIS)/wares
实际定义的变量是/home/directory/edan
然后,makeclean
规则被删除了/home/directory/edan
,而不是我想要的
如果一行有尾随空格,如何防止生成文件执行 尽管您可以编写Makefile,以便它检查变量是否有尾随空格,并在找到一些空格时退出,但是有更好的方法来处理这种情况
在本例中,我建议使用addsuffix
函数链接$(this)
和/wares
,而不是手动操作。addsuffix
函数将为您去除尾随空格。换言之:
WARES := $(addsuffix /wares,$(THIS))
如果确实希望它在发现尾随空格时退出,可以执行以下操作:
THIS := ~/edan
ifneq "$(THIS)" "$(strip $(THIS))"
$(error Found trailing whitespace)
endif
哎哟最好不要根据文件夹的绝对名称删除它们——使用相对路径,如rm-rf./wares
。如果它不是makefile所在的子目录,请使用:(cd$(THIS)和&rm-rf./wares)
。