GNUMakefiles之Makefiles的条件语句

来源:互联网 发布:golang interface 编辑:程序博客网 时间:2024/06/07 17:44

    参考文献:The GNU Make Manual v0.70(可从http://download.csdn.net/detail/npy_lp/7544225 上下载)

 

    Makefiles条件语句的主要作用是根据比较两个变量值或一个变量值与一个常量是否相同来决定执行或忽略makefile文件中的某部分(一行或多行的文本)。

    Makefiles条件语句的基本语法如下:

    

    对于每个条件语句来说,必须以conditional-directive条件判断作为开始,以endif指示符作为结束,而其中的else指示符是可选的,else conditional-directive选项的数量也是任意的。其中,text-if-one-is-truetext-if-truetext-if-false表示makefile文件中任意行数的文本。

    一旦有一个给定的条件为真,就执行该条件下的text-if-true,否则执行text-if-false(如果有else选项的话)。

    在Makefile文件中,conditional-directive的含义具有以下四种基本类型:

    (1)、ifeqifneq指示符

    

    指示符ifeqifneq用来判断arg1arg2是否相同或不同。在比较arg1arg2之前,必须先展开它们之中所有的变量的引用或函数。

    (2)、ifdefifndef指示符

    

    指示符ifdefifndef用来判断variable-name是否已经定义。出现在makefile文件中但没有对它进行赋值,如“foo = ”这样的形式也被认为变量foo没有定义,否则,就是已经定义。

    这里使用变量名来作为这两个指示符判断的对象,所以variable-name必需是一个变量或者是一个变量的引用再或者是一个能展开为一个变量的函数。对于变量的引用或函数,在判断它们之前会展开为相应的变量名。

   

    指示符(如ifeqifneqifdefifndefelseendif等等)作为一个整体不能被空白字符分割,但是它们的前后可以存在额外的空格,之后也可以存在额外的制表符。注释也可以出现在它们所在行的行尾。

    条件语句的conditional-directive中不能使用自动变量,因为直到命令运行时它们才会被定义。

    为了防止不堪忍受的混乱,跨越不同makefile文件的条件语句也是不允许的。

0 0
原创粉丝点击