• / 5
  • 下载费用:10 金币  

Makefile的条件执行.doc

关 键 词:
Makefile的条件执行.doc
资源描述:
Makefile 的条件执行条件语句可以根据一个变量的值来控制 make执行或者忽略 Makefile的特定部分。条件语句可以是两个不同变量、或者变量和常量值的比较。要注意的是:条件语句只能用于控制 make实际执行的 makefile文件部分,它不能控制规则的 shell命令执行过程。Makefile中使用条件控制可以做到处理的灵活性和高效性。7.1 一个例子 首先我们来看一个使用条件判断的 Makefile例子;对变量“CC”进行判断,其值如果是“gcc”那么在程序连接时使用库“libgnu.so”或者“libgnu.a”,否则不链接任何库。Makefile 中的条件判断部分如下:双击代码全选1234567891011121314…… libs_for_gcc = -lgnu normal_libs = …… foo: $(objects) ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc) else $(CC) -o foo $(objects) $(normal_libs) endif ……例子中,条件语句中使用到了三个关键字:“ifeq”、“else”和“endif”。其中:1. “ifeq”表示条件语句的开始,并指定了一个比较条件(相等)。之后是用圆括号括包围的、使用逗号“,”分割的两个参数,和关键字“ifeq”用空格分开。参数中的变量引用在进行变量值比较时被展开。“ifeq”之后就是当条件满足 make需要执行的,条件不满足时忽略。2. “else”之后就是当条件不满足时的执行部分。不是所有的条件语句都需要此部分。3. “endif”表示一个条件语句的结束,任何一个条件表达式都必须以“endif”结束。通过上边的例子我们可以了解到。Makefile 中,条件表达式工作于文本级别(条件判断处理为文本级别的处理过程),条件的解析是由 make来完成的。make 是在读取并解析 Makefile时根据条件表达式忽略条件表达式中的某一个文本行,解析完成后保留的只有表达式满足条件所需要执行的文本行。上例,make 处理条件的过程:当变量“CC”的值为“gcc”时,整个条件表达式等效于:foo: $(objects)$(CC) -o foo $(objects) $(libs_for_gcc)当变量“CC”值不等于“gcc”时等效于:foo: $(objects)$(CC) -o foo $(objects) $(normal_libs)上面的例子,一种更简洁实现方式:双击代码全选1234567891011libs_for_gcc = -lgnu normal_libs = ifeq ($(CC),gcc) libs=$(libs_for_gcc) else libs=$(normal_libs) endif foo: $(objects) $(CC) -o foo $(objects) $(libs)7.2 条件判断的基本语法 一个简单的不包含“else”分支的条件判断语句的语法格式为:双击代码全选123CONDITIONAL-DIRECTIVE TEXT-IF-TRUE endif表达式中“TEXT-IF-TRUE”可以是若干任何文本行,当条件为真时它就将被 make作为需要执行的一部分。当条件为假时,不作为需要执行的一部分。包含“else”的复杂一点的语法格式为:双击代码全选12345CONDITIONAL-DIRECTIVE TEXT-IF-TRUE else TEXT-IF-FALSE endif表示了如果条件为真,则将“TEXT-IF-TRUE”作为执行 Makefile的一部分,否则将“TEXT-IF-FALSE”作为执行的 Makefile的一部分。和“TEXT-IF-TRUE”一样,“TEXT-IF-FALSE”可以是若干任何文本行。条件判断语句中“CONDITIONAL-DIRECTIVE”对于上边的两种格式都是同样的。可以是以下四种用于测试不同条件的关键字。7.2.1 关键字“ifeq” 此关键字用来判断参数是否相等,格式如下:`ifeq (ARG1, ARG2)'`ifeq 'ARG1' 'ARG2''`ifeq “ARG1“ “ARG2“'`ifeq “ARG1“ 'ARG2''`ifeq 'ARG1' “ARG2“'替换展开“ARG1”和“ARG1”后,对它们的值进行比较。如果相同则(条件为真)将“TEXT-IF-TRUE”作为 make要执行的一部分,否则将“TEXT-IF-FALSE”作为 make要执行的一部分(上边的第二种格式)。通常我们会使用它来判断一个变量的值是否为空(不是任何字符)。参数值可能是通过引用变量或者
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:Makefile的条件执行.doc
链接地址:https://www.weizhuannet.com/p-9142883.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开