使用GNU Make的通配符函数捕获包括括号的文件名

时间:2013-06-17 13:19:56

标签: makefile escaping gnu-make

我将使用Makefile从一组数据目录中渲染一些图来并行化进程,但是使用通配符函数进行文件名转义时会出现问题。

这是我的Makefile的标题:

SOURCE_DIR = ./results
SOURCES = $(wildcard $(SOURCE_DIR)/*cpuonly*) $(wildcard $(SOURCE_DIR)/*cudaonly*)
$(warning $(SOURCES))  # for debugging
...

示例目录名称是:

  • blahblah-cpuonly-123
  • blahblah-cudaonly-345
  • blahblah-cpuonly-(123567)

此处,警告功能的输出仅包括目录名,不带括号。 我怎样才能包含带括号的那些呢?

编辑:当然,我可以更改文件名,不包括括号。但对于这个问题,我只想知道是否使用括号是不可能的。

EDIT2 :我使用诸如“blablah-cpuonly-(123,567).log”之类的文件名对其进行了测试,输出包含了它们!但是,它会在执行规则时导致shell语法错误。 :(

1 个答案:

答案 0 :(得分:1)

我无法重现你的问题(我知道对括号没有限制):

$ cat Makefile
foo := $(wildcard *foo*)
$(info foo = $(foo))
all: ;:

$ ls -1 *foo*
foo
foo-(bar,baz).bar
foo.mk

$ make
foo = foo foo-(bar,baz).bar foo.mk
: