gpt4 book ai didi

makefile - 如何保持额外的空间不破坏这个 Makefile?

转载 作者:行者123 更新时间:2023-12-02 02:05:15 24 4
gpt4 key购买 nike

我习惯于 GNU make 忽略变量中的额外空格,所以我对以下内容感到惊讶。

## Makefile ##
PKGS = FOO BAR

FOO_DIR = foo
BAR_DIR = bar
# ^-------- Extra space at end of line

include $(foreach pkg, $(PKGS), $($(pkg)_DIR)/comp.mk)

default:
@echo "Hello world!"

如果 BAR_DIR = bar 后有空格,make 将失败并出现此错误:

'make: *** bar: Is a directory.  Stop.'

我想我明白这里发生了什么——包含文件路径中有一个空格,所以 make 认为我想包含一个目录,因此出现错误。如果空格被删除,并且文件 foo/comp.mkbar/comp.mk 存在,make 将运行而不会出错。

我的问题是,是否有某种方法可以防止额外空间导致此故障?

最佳答案

您可以使用 strip 来防止这种情况:

include $(foreach pkg, $(PKGS), $(strip $($(pkg)_DIR))/comp.mk)

出于类似的原因,在将参数传递给函数(包括 foreach)时,避免逗号后的空格通常是明智的。

关于makefile - 如何保持额外的空间不破坏这个 Makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com