我有一个包含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.

最佳答案

您可以那样做(不能使用ifelse)

-include Tool/Rules.mak
include common/Rules-Tool

这样,如果Tool / Rules.mak不存在,则不会出现错误。 (“-”可以解决问题)

然后,在common / Rules-Tool中,使用?=运算符(“条件变量赋值运算符”)为变量赋值。仅当变量尚不存在时,此运算符才会分配值。 IOW,它不会覆盖预先存在的值。如果Tool / Rules.mak不存在或仅部分填充变量common / Rules-Tool将完成它们。

10-07 21:45