使文件为空参数导致shell出错
Makefile blank arguments causing errors in shell
所以我正在编写一个通用的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
。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 如何通过cpp程序运行shell脚本
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- shell排序中的交换和比较
- 运行 shell 脚本时出错:"pipe call failed"
- 使文件为空参数导致shell出错
- 在c++ ubuntu linux下运行shell命令出错