使文件为空参数导致shell出错

Makefile blank arguments causing errors in shell

本文关键字:shell 出错 参数 文件      更新时间:2023-10-16

所以我正在编写一个通用的makefile来编译C/C++程序。你可以填写一些变量,我希望选项为空。然而,如果我把它们留空,它会在稍后的外壳搜索中导致一些错误。

例如:

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,但我希望能够将其留空。

我如何进行检查,或者更好地进行外壳搜索,以便容纳空行?

此发布的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调用行上的-D参数重写宏FILESDIR