原创 make中的隐含变量

2011-5-30 16:37 3315 6 6 分类: 软件与OS

 

一下内容来自make中文手册

9.3隐含变量

       内嵌隐含规则的命令中,所使用的变量都是预定义的变量。我们将这些变量称为“隐含变量”,这些变量我们可以对它进行修改:在Makefile中,通过命令行参数或者设置系统环境变量的方式来对它进行重定义。无论是哪种方式,只要make在运行时它的定义有效,make的隐含规则都会使用这些变量。当然,也可以使用-R —no-builtin-variables选项来取消所有的隐含变量(同时取消了所有的隐含规则)。

       隐含规则中所使用的变量(隐含变量)分为两类:1.代表一个程序的名字(例如:“CC”代表了编译器这个可执行程序)。2.代表执行这个程序适用的参数(例如:变量“CFLAGS”),多个参数使用空格分开。当然也允许在程序的名字中包含参数。但是这种方式建议不要使用。对于参数的描述我们应该将它们集中在一个变量中,即就是整个工程存在一个必需的参数,我们也可以把它放置一个特殊命名的变量定义中,通用的代表参数的那个变量的定义对它引用;通过这种方式来实现,而不是将它和所要执行的程序名定义在一个变量中。我们的Makefile要尽量做到清晰、明了、干练的管理一个工程。而不要各个变量之间存在错综复杂的关系!模块化的编程思想也同样适用于我们编写Makefile.

       一下是一些作为程序名的隐含变量定义:

 

9.3.1代表命令的变量

       AR:函数库打包程序,可创建静态库.a文档,默认是ar.

       AS:汇编程序。默认是as.

       CCC编译程序。默认是cc.

       CXXC++编译程序,默认是g++.

       CO:从RCS中提取文件的程序。默认是co.

       CPPC程序的预处理器(输出是标准输出设备)。默认是$(CC) –E

       FC:编译器和预处理FortranRatfor源文件的编译器,默认是f77.

       GET:从SCCS中提取文件程序。默认是get

       LEX:将Lex语言转变为CRatfor的程序。默认是lex

       PCPascal语言编译器。默认是pc

       YACCYacc文法分析器(针对C程序)。默认命令是yacc.

       YACCRYacc文法分析器(针对于Ratfor程序)。默认是yacc –r

       MAKEINFO:转换Texinfo源文件(.texi)到Info文件程序。默认是makeinfo.

       TEX:从TeX源文件创建TeX DVI文件的程序。默认是tex

       TEXI2DVI:从Texinfo源文件创建TeX DVI文件的程序。默认是texi2dvi.

       WEAVE:转换WebTeX的程序。默认是weave

       CWEAVE:转换C WebTeX的程序。默认是cweave.

       TANGLE:转换WebPasscal语言的程序。默认是tangle.

       CTANGLE:转换C WebC。默认是ctangle

       RM:删除命令。默认是rm –f.

 

9.3.2命令参数的变量

       下面的是代表命令执行参数的变量。如果没有给出默认值则默认值为空。

       ARFLAGS

              执行AR命令的命令行参数。默认值是rv.

       ASFLAGS

              执行汇编器AS的命令行参数。(当明显的调用.s.S文件时)

       CFLAGS

              执行CC编译器的命令行参数(编译.c源文件的选项)。

       CXXFLAGS

              执行g++编译器的命令行参数(编译.cc源文件的选项)。

       COFLAGS

              执行co的命令行参数(在RCS中提取文件的选项)。

       CPPFLAGS

              执行C预处理器 cc –E的命令行参数(CFortran编译器会用到)。

       FFLAGS

              Fotran语言编译器f77执行的命令行参数(编译Fortran源文件的选项)。

       GFLAGS

              SCCS  “get”程序参数。

       LDFLAGS

              连接器参数。(如:ld

       LFLAGS

              Lex文法分析器参数。

       PFLAGS

              Pascal语言编译器参数。

       RFLAGS

              Ratfor程序的Fortran编译器参数。

       YFLAGS

              Yacc文法分析器参数

      

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条