新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Linux下C编程基础之:make工程管理器

Linux下C编程基础之:make工程管理器

作者:时间:2013-09-13来源:网络收藏


本文引用地址:http://www.eepw.com.cn/article/257149.htm

3.5.3makefile规则

makefile的规则是make进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。在上面的例子中,都显式地指出了makefile中的规则关系,如“$(CC)$(CFLAGS)-c$-o$@”,但为了简化makefile的编写,make还定义了隐式规则和模式规则,下面就分别对其进行讲解。


1.隐式规则

隐含规则能够告诉make怎样使用传统的规则完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。make会自动搜索隐式规则目录来确定如何生成目标文件。如上例就可以写成:


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

为什么可以省略后两句呢?因为make的隐式规则指出:所有“.o”文件都可自动由“.c”文件使用命令“$(CC)$(CPPFLAGS)$(CFLAGS)-cfile.c–ofile.o”来生成。这样“kang.o”和“yul.o”就会分别通过调用“$(CC)$(CFLAGS)-ckang.c-okang.o”和“$(CC)$(CFLAGS)-cyul.c-oyul.o”来生成。


注意

在隐式规则只能查找到相同文件名的不同后缀名文件,如“kang.o”文件必须由“kang.c”文件生成。


表3.17给出了常见的隐式规则目录。

表3.17 makefile中常见隐式规则目录

对应语言后缀名

隐式规则

C编译:.c变为.o

$(CC)–c$(CPPFLAGS)$(CFLAGS)

C++编译:.cc或.C变为.o

$(CXX)-c$(CPPFLAGS)$(CXXFLAGS)

Pascal编译:.p变为.o

$(PC)-c$(PFLAGS)

Fortran编译:.r变为-o

$(FC)-c$(FFLAGS)

2.模式规则

模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则,隐式规则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化makefile的编写。


模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明。使用模式规则修改后的makefile的编写如下:


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

%.o:%.c

$(CC)$(CFLAGS)-c$-o$@


3.5.4make管理器的使用

使用make管理器非常简单,只需在make命令的后面键入目标名即可建立指定的目标,如果直接运行make,则建立makefile中的第一个目标。


此外make还有丰富的命令行选项,可以完成各种不同的功能。表3.18列出了常用的make命令行选项。

表3.18 make的命令行选项

命令格式

含义

-Cdir

读入指定目录下的makefile

-ffile

读入当前目录下的file文件作为makefile

-I

忽略所有的命令执行错误

-Idir

指定被包含的makefile所在目录

-n

只打印要执行的命令,但不执行这些命令

-p

显示make变量数据库和隐含规则

-s

在执行命令时不显示命令

-w

如果make在执行过程中改变目录,则打印当前目录名


linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭