war*_*rem 5 makefile parentheses
以下是我的Makefile:
.PHONY: all
all: /Users/wu/qqaa/homepage\ 1\ 2\ 3/icons\ (a-b)
@tar cjvf 1.tar.bz2 --exclude=*~ /Users/wu/qqaa/homepage\ 1\ 2\ 3/icons\ \(a-b\)
Run Code Online (Sandbox Code Playgroud)
它没用.问题是依赖的括号.添加\之前(和)也没有工作.错误是这样的:
make: *** No rule to make target `/Users/wu/qqaa/homepage 1 2 3/icons (a-b)', needed by `all'. Stop
Run Code Online (Sandbox Code Playgroud)
目录/ Users/wu/qqaa/homepage 1 2 3/icons(ab)确实存在.似乎括号不能用于依赖.这是对的吗?或者我会错过什么?
声音冒号也不能用于依赖.
我写了一个bash shell脚本来备份我的系统.我用过make和tar备份.使用make是仅更新较新的文件并tar目录.问题是许多文件的名称都有冒号或括号,它们在Makefile中有特殊含义.这导致了上述问题.
我非常感谢任何帮助.谢谢.
问题是括号标记存档成员并且似乎无法转义。通常的技巧是反斜杠转义和使用变量转义:
.PHONY : all
leftparen:=(
rightparen:=)
all: /Users/wu/qqaa/homepage\ 1\ 2\ 3/icons\ $(leftparen)a-b$(rightparen)
@tar cjvf 1.tar.bz2 --exclude=*~ "$@"
Run Code Online (Sandbox Code Playgroud)
由于在这种情况下两者都不起作用,您可能不得不忍受此限制或针对 GNU make 提交错误。