我有一个包含Rules.mak文件的makefile,该文件包含要使用的工具的包含。问题是,如果工具文件夹要提取版本或使用“本机”安装,则它们具有免费选项。所以我想包括工具提取的规则(如果存在的话),否则我想包括本机文件。
目标是这样的:
if Tool/Rules.mak exists then
include Tool/Rules.mak
else
include common/Rules-Tool.mak
fi
我已经尝试了bash方式或make方式,但是由于这是设置环境的先决条件,因此我没有特定的目标,但是由于检查失败而导致调用错误。
if [ -f Tool/Rules.mak ]
then
echo testfile exists!
fi
也
if [ -d ./Tool ]
then
echo testfile exists!
fi
以及带有引号和类似内容的版本。问题是,几乎在我输入时,我总是会遇到以下错误:
Rules.mak:14: *** missing separator. Stop.
最佳答案
您可以那样做(不能使用if
或else
)
-include Tool/Rules.mak
include common/Rules-Tool
这样,如果Tool / Rules.mak不存在,则不会出现错误。 (“-”可以解决问题)
然后,在common / Rules-Tool中,使用?=运算符(“条件变量赋值运算符”)为变量赋值。仅当变量尚不存在时,此运算符才会分配值。 IOW,它不会覆盖预先存在的值。如果Tool / Rules.mak不存在或仅部分填充变量common / Rules-Tool将完成它们。