初学Makefile.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
初学Makefile概要1

MakeFile学习 陈 龙 编译和链接规则(输入make命令之后将按照以下规则工作) 在一个通用Makefile中通常包含下面内容: 1、需要由make工具创建的目标体(target),通常是目标文件或可执行文件。 2、要创建的目标体所依赖的文件(dependency_file)。 3、创建每个目标体时需要运行的命令(command)。 格式如下: target:dependency_files TABcommand 目标:依赖文件1,依赖文件2 命令 –依赖文件后缀 依赖文件1,依赖文件2, 目标 注意:命令行必须以单个的TAB字符进行缩进,不能是空格 当然也可以跟 目标和依赖文件在一行,不过要以;隔开 显式规则 由Makefile的书写者明显指出,要生成的文件,文件的依赖关系和生成的命令 如: foo.o : foo.c defs.h 依赖关系 gcc -o foo.o foo.c 生成目标的方法(方式) 隐晦规则 make有自动推导的功能,这样我们就可以简略地书写Makefile 如: foo.o : foo.c (.o文件自己推导出同名的依赖文件.c.) 变量定义 这里面的变量一般都是字符串,他有点像c语言的宏 如:H: =foo.c gcc -o foo.o $(H) (赋值可以用: =也可以直接用 =) 文件指示 包含3部分,一个是在一个Makefie中引用另一个Makefile,就像c语言的 include一样;另一个是根据某些情况指定Makefile中的有效部分,就像C语言 中的预编译#if一样;还有就是定义一个多行的命令。 注释 注释符用“#”如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义, 如:“\#”。 目标:在工作目录下有4个文件夹 分别是 sources(源文件) obj (中间文件)headers(头文件) bin(目标文件) sources里面有 main.c cn_work.c fun.c obj 里面最初没有文件 headers 里面有 fun.h cn_work.h 最终目标取名为 cn_work 它应存放到bin里面 开始写Makefile的预备知识: gcc 的3个参数: 1. -o 指定目标文件 gcc sources/main.c -o bin/main 2. -c 编译的时候只生产目标文件不链接 gcc -c sources/main.c -o obj/main.o 3. -I 主要指定头文件的搜索路径 gcc -I headers -c main.c -o main.o bin/cn_work : obj/main.o obj/cn_work.o obj/fun.o gcc obj/main.o obj/cn_work.o obj/fun.o -o bin/cn_work (命令一定要用以Tab开头) obj/cn_work.o : sources/cn_work.c gcc -I headers -c sources/cn_work.c -o obj/cn_work.o obj/main.o : sources/main.c gcc -I headers -c sources/main.c -o file_o/main.o obj/fun.o : sources/fun.c gcc -I headers -c file_c/fun.c -o file_o/fun.o clean: rm -f bin/cn_work file_o/*.o 用隐式规则改进: 3个符号介绍: 1. $@ 表示要生成的目标 2. $^ 表示全部的依赖文件 3. $ 表示第一个依赖文件 bin/cn_work : obj/main.o obj/cn_work.o obj/fun.o gcc $^ -o $@ (命令一定要用以Tab开头) obj/cn_work.o : sources/cn_work.c gcc -I headers -c $ -o $@ obj/main.o : sources/main.c gcc -I headers -c $ -o $@ obj/fun.o : sources/fun.c gcc -I headers -c $ -o $@ clean: rm -f bin/cn_work file_o/*.o

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档