1

我想以跨平台的方式获取生成文件列表。

但是在 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 函数或系统命令调用)?

4

1 回答 1

0

基本答案是 make 不支持其中包含空格的文件名。如果你愿意做很多额外的工作,一些非常有限的使用可以在一些非常有限的情况下成功。MAKEFILE_LIST 不是那些有限的情况之一。

将包含空格的路径名视为不支持是最简单的。只是不要这样做。

于 2013-10-03T15:18:45.170 回答