在包含之前检查是否存在makefile

时间:2011-12-01 18:07:19

标签: bash makefile makefile-project

我有一个makefile,其中包含一个Rules.mak文件,该文件包含我想要使用的工具。问题是,如果工具文件夹要提取版本或使用“本机”安装,则它们具有空闲选项。所以我希望包含工具提取规则(如果存在),否则我想包含原生文件。

这样的目标是:

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.    

2 个答案:

答案 0 :(得分:34)

你可以这样做(没有ifelse

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

如果Tool / Rules.mak不存在,您将不会收到错误。 (' - '可以解决问题)

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

答案 1 :(得分:0)

如果由于某种原因您不想使用<errorResponse> <httpCode>404</httpCode> <httpMessage>Not Found</httpMessage> <moreInformation>The requested URL was not found on this server</moreInformation> </errorResponse> 运算符(也许您所要做的不仅仅是设置变量),那么您可以通过以下方式进行?=

if..then..else..fi