Makefile空白参数导致shell中的错误

时间:2015-12-05 01:01:56

标签: c++ c bash shell makefile

所以我正在编写一个通用的makefile来编译C / C ++程序。您可以填写一些变量,我希望选择将它们留空。但是,如果我将它们留空,则会在稍后的shell搜索中导致一些错误。

例如:

FILESDIR = 
FILES = $(shell find $(FILESDIR) -type -f -name "*.cpp")
NOTFILES = $(shell find . -not -path *$(FILESDIR)* -type f - name "*.cpp")

但这会引发错误。我猜这是因为shell行被评估为shell find -type -name "*.cpp",这在语法上是错误的。

我目前的工作是分配FILESDIR = /dev/null,但我希望能够将其留空。

如何进行检查,或者更好地进行shell搜索,以便它可以容纳空行?

1 个答案:

答案 0 :(得分:1)

这个发布的makefile内容:

FILESDIR = 
FILES = $(shell find $(FILESDIR) -type -f -name "*.cpp")
NOTFILES = $(shell find . -not -path *$(FILESDIR)* -type f - name "*.cpp")

有一些问题,正如你所注意到的那样。

更好的实施可能是:

FILESDIR = .     
FILES := $(wildcard  $(FILESDIR)/*.cpp )
NOTFILES := $(shell find . -not -path *$(FILESDIR)/* -type f -name "*.cpp")

然后可以通过make调用行上的FILESDIR参数覆盖宏-D