Below you will find pages that utilize the taxonomy term “Makefile”
January 13, 2011
3.6.4 Make管理器的使用
"\u003cp\u003e使用Make管理器非常简单,只需在make命令的后面键入目标名即可建立指定的目标,如果直接运行make,则建立Makefile中的第一个目标。\u003c/p\u003e\n\u003cp\u003e此外 make 还有丰富的命令行选项,可以完成各种不同的功能。下表3.17 列出了常用的make命令行选项。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e表3.17 make的命令行选项\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e命 令 格 式 含 义\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e-C dir 读入指定目录下的Makefile\u003c/p\u003e\n\u003cp\u003e-f file 读入当前目录下的file文件作为Makefile\u003c/p\u003e\n\u003cp\u003e-i 忽略所有的命令执行错误\u003c/p\u003e\n\u003cp\u003e-I dir 指定被包含的Makefile所在目录\u003c/p\u003e\n\u003cp\u003e-n 只打印要执行的命令,但不执行这些命令\u003c/p\u003e\n\u003cp\u003e-p 显示make变量数据库和隐含规则\u003c/p\u003e\n\u003cp\u003e-s 在执行命令时不显示命令\u003c/p\u003e\n\u003cp\u003e-w 如果make在执行过程中改变目录,则打印当前目录名\u003c/p\u003e\u003c/blockquote\u003e"
January 13, 2011
3.6.3 Makefile规则
"\u003cp\u003eMakefile 的规则是Make 进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。一般的,Makefile 中的一条语句就是一个规则。在上面的例子中,都显示地指出了Makefile中的规则关系,如“$(CC) $(CFLAGS) -c $\u0026lt; -o $@”,但为了简化Makefile的编写,make还定义了隐式规则和模式规则,下面就分别对其进行讲解。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.隐式规则\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e隐含规则能够告诉make 怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make 会自动搜索隐式规则目录来确定如何生成目标文件。如上例就可以写成:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eOBJS = kang.o yul.o\u003c/p\u003e\n\u003cp\u003eCC = Gcc\u003c/p\u003e\n\u003cp\u003eCFLAGS = -Wall -O -g\u003c/p\u003e\n\u003cp\u003esunq : $(OBJS)\u003c/p\u003e\n\u003cp\u003e$(CC) $^ -o $@\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e为什么可以省略后两句呢?因为Make的隐式规则指出:所有“.o”文件都可自动由“.c”\u003c/p\u003e\n\u003cp\u003e文件使用命令“$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c –o file.o”生成。这样“kang.o”和“yul.o”就会 …\u003c/p\u003e"
January 13, 2011
3.6.2 Makefile变量
"\u003cp\u003e上面示例的Makefile在实际中是几乎不存在的,因为它过于简单,仅包含两个文件和一个命令,在这种情况下完全不必要编写Makefile 而只需在Shell 中直接输入即可,在实际中使用的Makefile往往是包含很多的文件和命令的,这也是Makefile产生的原因。下面就可给\u003c/p\u003e\n\u003cp\u003e出稍微复杂一些的Makefile进行讲解:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003esunq\u003c/strong\u003e:kang.o yul.o\u003c/p\u003e\n\u003cp\u003eGcc kang.o bar.o -o myprog\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ekang.o\u003c/strong\u003e : kang.c kang.h head.h\u003c/p\u003e\n\u003cp\u003eGcc –Wall –O -g –c kang.c -o kang.o\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eyul.o\u003c/strong\u003e : bar.c head.h\u003c/p\u003e\n\u003cp\u003eGcc – Wall –O -g –c yul.c -o yul.o\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e在这个Makefile中有3 个目标体(target),分别为sunq、kang.o和yul.o,其中第一个目标体的依赖文件就是后两个目标体。如果用户使用命令“make sunq”,则make管理器就是找到sunq目标体开始执行。\u003c/p\u003e\n\u003cp\u003e这时,make会自动检查相关文件的时间戳。首先,在检查“kang.o”、“yul.o”和“sunq”3 个文件 …\u003c/p\u003e"
January 13, 2011
3.6.1 Makefile基本结构
"\u003cp\u003e\u003cstrong\u003e3.6.1 Makefile基本结构\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMakefile 是Make 读入的惟一配置文件,因此本节的内容实际就是讲述Makefile 的编写规则。在一个Makefile中通常包含如下内容:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e需要由make工具创建的目标体(target),通常是目标文件或可执行文件;\u003c/li\u003e\n\u003cli\u003e要创建的目标体所依赖的文件(dependency_file);\u003c/li\u003e\n\u003cli\u003e创建每个目标体时需要运行的命令(command)。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e它的格式为:\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003etarget: dependency_files\u003c/p\u003e\n\u003cp\u003ecommand\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e例如,有两个文件分别为hello.c 和hello.h,创建的目标体为hello.o,执行的命令为gcc\u003c/p\u003e\n\u003cp\u003e编译指令:gcc –c hello.c,那么,对应的Makefile就可以写为:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#The simplest example\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ehello.o: hello.c hello.h\u003c/strong\u003e \u003cstrong\u003e//\u003cstrong\u003e\u003cstrong\u003e要创建的目标体所偏依赖的文件\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003egcc\u003c/strong\u003e **–**\u003cstrong\u003ec hello.c\u003c/strong\u003e **–**\u003cstrong\u003eo hello.o\u003c/strong\u003e \u003cstrong\u003e//\u003cstrong\u003e\u003cstrong\u003e创建目标体要运行的命令\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e接着就可以使用make了。使用make的格式为:make target,这样make就会自动读入Makefile(也可 …\u003c/p\u003e"