makefile - 如何在Makefile中依赖使用括号

标签 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\)

它没有用。问题是依赖中的括号。添加 \之前 ()也没有用。错误是这样的:
make: *** No rule to make target `/Users/wu/qqaa/homepage 1 2 3/icons (a-b)', needed by `all'. Stop

目录/Users/wu/qqaa/homepage 1 2 3/icons (a-b) 确实存在。似乎不能在依赖中使用括号。这是正确的吗?或者我错过了什么?

听起来冒号也不能独立使用。

我写了一个 bash shell 脚本来备份我的系统。我用过 maketar备份。使用 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=*~ "$@"

由于在这种情况下两者都不起作用,您可能不得不忍受此限制或针对 GNU make 提交错误。

关于makefile - 如何在Makefile中依赖使用括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077010/

相关文章:

Makefile:始终运行规则的先决条件?

c++ - 在 Mac OS X 上使用 LLVM 安装和编译

c++ - 如何在 cmake 项目上构建 cpp 模块?

binary-tree - 在 Coq 中定义 Unlambda 风格的树表示法

bash - 在 bash 脚本中打开文件

Emacs:添加自定义代码块定界符?

linux - 如何构建和安装我已经安装在不同位置的同一个库

c++ - 管理生成文件中的依赖关系复杂性

haskell - 确定 Haskell 中的匹配括号

java 用括号打印有序 BST