所以我正在编写一个通用的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搜索,以便它可以容纳空行?
答案 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
。