鹰之歌

既然你崇拜鹰,就要像鹰一样翱翔天际,俯瞰大地。哪怕会摔的粉身碎骨。

导航

make中的隐含变量

9.3隐含变量

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

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

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

9.3.1代表命令的变量

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

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

       CC:C编译程序。默认是cc.

       CXX:C++编译程序,默认是g++.

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

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

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

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

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

       PC:Pascal语言编译器。默认是pc。

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

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

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

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

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

       WEAVE:转换Web到TeX的程序。默认是weave。

       CWEAVE:转换C Web到TeX的程序。默认是cweave.

       TANGLE:转换Web到Passcal语言的程序。默认是tangle.

       CTANGLE:转换C Web到C。默认是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的命令行参数(C和Fortran编译器会用到)。

       FFLAGS

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

       GFLAGS

              SCCS  “get”程序参数。

       LDFLAGS

              连接器参数。(如:ld)

       LFLAGS

              Lex文法分析器参数。

       PFLAGS

              Pascal语言编译器参数。

       RFLAGS

              Ratfor程序的Fortran编译器参数。

       YFLAGS

              Yacc文法分析器参数

      

posted on 2011-05-30 16:40  鹰之歌  阅读(339)  评论(0编辑  收藏  举报