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