gpt4 book ai didi

makefile - 如何转义 Makefile 中的空格

转载 作者:行者123 更新时间:2023-12-03 06:35:09 35 4
gpt4 key购买 nike

假设我想将位于 /home/me/Google Drive/Foobar/ 的 C++ 项目编译为名为 Foobar 的可执行文件,并且我想使用 GNU使该过程自动化。

这是我的 Makefile 的样子:

OUTPUT = $(notdir $(CURDIR))

all $(OUTPUT):
g++ *.cpp -o $(OUTPUT)

问题是,由于项目路径中有空格,notdir 命令正在解释两个单独的路径并返回 Google Foobar

我尝试在 $(CURDIR) 周围加上引号 ($(notdir "$(CURDIR)")),但出现以下错误:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Makefile:4: recipe for target 'all' failed
make: *** [all] Error 1

我不明白问题出在哪里。

另外,我希望得到一个不涉及更改路径名的答案...谢谢:)

最佳答案

您可以尝试替换 space_$(CURDIR)然后获取 $(OUTPUT) 。就像下面这样

null      :=
SPACE := $(null) $(null)
OUTPUT = $(notdir $(subst $(SPACE),_,$(CURDIR)))

all $(OUTPUT):
g++ *.cpp -o $(OUTPUT)

基本上是在 string substitution (subst)之后

$(OUTPUT) will be Foobar

关于makefile - 如何转义 Makefile 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687828/

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