gpt4 book ai didi

c++ - Makefile 空白参数导致 shell 出错

转载 作者:行者123 更新时间:2023-11-28 05:56:19 24 4
gpt4 key购买 nike

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

最佳答案

此发布的 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

关于c++ - Makefile 空白参数导致 shell 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com