gpt4 book ai didi

makefile - 如何处理 Makefile 中带有空格的文件?

转载 作者:行者123 更新时间:2023-12-01 01:07:04 24 4
gpt4 key购买 nike

因此,一些匿名开发人员决定使用一种荒谬的约定,即在包含其源文件的文件夹名称中使用空格。我会更改这些文件夹以不使用空格,但遗憾的是我没有在这里制定规则,所以这不是一个选项(尽管我希望它是)。

LUAC            = luac

SRC_DIR = .
SOURCE = \
stupid/naming\ convention/a.lua \
stupid/naming\ convention/very\ annoying/b.lua \

vpath .lua $(SRC_DIR)

OUT_DIR = ../out/
OUTPUT = $(patsubst %.lua, $(OUT_DIR)/%.luac, $(SOURCE))


all: $(OUTPUT)

$(OUT_DIR)/%.luac: %.lua
$(LUAC) "$<"
mv luac.out "$@"

.PHONY: all

简单的 Makefile。它要做的就是编译我拥有的所有 Lua 文件并将它们放入输出目录。

不管我怎么做,它总是想拆分 SOURCE文件夹中空格上的字符串,所以我以一个漂亮的错误结束,如下所示:
make: *** No rule to make target `stupid/naming ', needed by `all'.  Stop.

有没有办法在不重命名文件夹的情况下解决这个问题?

提前致谢。

最佳答案

非常简短但 IMO 最终正确的答案是 make(不仅仅是 GNU make,而是所有 POSIX 样式的 make 实现)不支持包含空格的路径名。如果您想使用 make,您的“匿名开发人员”根本无法使用它们。如果他们坚持这是绝对要求,您应该完全切换到不同的构建工具,它确实支持文件名中的空格。

是的,几乎不可能创建一个可以使用包含空格的文件名的 makefile,但是您基本上必须从头开始重写所有 makefile,并且您将无法使用 GNU make 的许多功能,因此您的 makefile 将是长,难以阅读,难以维护。

只是告诉他们克服自己。或者,如果他们真的不能,请尝试让他们在路径名中创建他们的工作区,名称中没有任何空格,然后创建一个包含指向真实工作区的空格的符号链接(symbolic link)(相反的方法并非在所有情况下都有效)。

关于makefile - 如何处理 Makefile 中带有空格的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17965806/

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