我想以跨平台的方式获取makefile列表。
但是在Windows上,MAKEFILE_LIST不支持空间(不受保护):
$(warning MAKEFILE_LIST=$(MAKEFILE_LIST))
给出以下结果(因为Makefile包含在另一个中):
MAKEFILE_LIST= Makefile C:/Program Files/MyApp/Makefile.include
make字符串操作的功能不足以处理它,并且获取顶级Makefile的常规方法不起作用:
THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
显然会返回此损坏的结果(因为 lastword 基于空格):
THIS_MAKEFILE=Files/MyApp/Makefile.include
任何解决方案都要干净利落(意味着使用make函数或系统命令调用)?
答案 0 :(得分:0)
基本答案是make不支持带有空格的文件名。如果你愿意做很多额外的工作,一些非常有限的使用可以在一些非常有限的情况下成功。 MAKEFILE_LIST不是那些有限的情况之一。
最简单的方法是将包含空格的路径名视为不受支持。只是不要这样做。