(13)接着开始一个更复杂的例子,课程的素材 2 ,先给出书写 makefile 的框架 :

++ 要编译的程序的源代码组成:

(14) 书写依赖关系的时候, 源文件里包含 的自定义头文件,也要写进依赖关系里,系统库的头文件则不用包含:

(15)可以用 g++ -MM y.cpp 命令来让系统帮助生成依赖关系:

++再用 g++ -MM 分析另一个 .cpp 文件的依赖关系:

(16) 如何从 windows 里的命令行 dos 窗口中复制 文本:

++ 其实感觉就是鼠标左键点击开头部分,拉动着选择到结尾,再点击右键,就可以了,内容就到剪贴板了。不是左键,就是右键。
(17) 最终得到的配套源文件的 makefile 如下:

++ 用 make 运行一下:

++对写好的 makefile 文件,老师再解释一下,如果一个目标跟最终的目标没有直接或间接的依赖关系,是不会被 make 自动执行的。这样的目标需要手动执行 : make 目标名。不仅仅是 clean 语义,别的名称的 .o 文件也一样,不与最终目标有联系,就不会被自动编译:

++ 测试一下不在依赖里面写 .h 头文件,可见也是可以的:

++补充笔记:

++ makefile 中的第一个目标会被认为是最终目标:

++ 改变 makefile 文件里的最终目标:

++ 指定 makefile 的最终目标:

(18)声明伪目标,来解决与同名目标名的冲突 :
PHONY 也是一条规则,只是这条规则只有目标和依赖,没有方法。

++ 伪目标的另一种用法:

(19) 学习依赖的两种类型:

++ 以下在 ubantu 上 make 了一下,报错,先不研究为啥了,老师以前说过,windows 每次都强制执行链接。所以要在 linux 来测试:

(20) 又一个知识点,如何让 windows 上的命令行窗口大一点:

(21)
谢谢

被折叠的 条评论
为什么被折叠?



