摘要: 阅读全文
posted @ 2018-10-01 18:41 周伯通789 阅读(371) 评论(0) 推荐(0)
摘要: 如果我们正在进行的项目需要使用第三方库,那么前几节的makefile能胜任吗?答案是否定的。 本节我们研究第三方库的使用。使makefile支持第三方库。 libs第三方库一般和其他模块是并列的关系。因此,libs文件夹和commom、module等文件夹是同等地位的。 动态链接库和静态链接库都有对 阅读全文
posted @ 2018-10-01 18:30 周伯通789 阅读(291) 评论(0) 推荐(0)
摘要: 一般而言,不同的工程师负责不同的模块开发,写一段代码之后我们一般要先编译一下,确定一下有没有语法错误,但是,如果将整个工程完整编译一遍非常耗费时间,那么编译环境如何支持模块的独立编译呢? 上图中我们执行make main则只编译main模块。模块独立编译也方便了单元测试。 模块独立编译的解决方案: 阅读全文
posted @ 2018-10-01 18:21 周伯通789 阅读(193) 评论(0) 推荐(0)
摘要: 这一节我们来研究一下上一节中makefile存在的问题: 第一个问题导致了项目的文件夹不能移动,一旦移动则编译失败。 这样可以使得工程文件夹随意移动。 顶层makefile改动后的部分程序如下: 第35、36行我们通过命令行变量将路径传到模块makefile中,因此,模块makefile中的这两个相 阅读全文
posted @ 2018-10-01 18:15 周伯通789 阅读(201) 评论(0) 推荐(0)
摘要: 上一节我们完成了第一阶段的任务,这一节我们来完成第二阶段的任务: 编译静态库的工作是调用模块的makefile完成的。 实现要点: 只有知道了项目中有哪些模块,才能知道对应的文件夹的名字。 我们做如下的假设:项目中的模块基本稳定,模块名字直接写到makefile中去 makefile中嵌入shell 阅读全文
posted @ 2018-10-01 18:04 周伯通789 阅读(231) 评论(0) 推荐(0)
摘要: 本节我们研究大型项目的编译。大型项目的结构如下: 大型项目会划分不同的模块,不同的模块负责不同的功能。在模块文件夹中还有更深一层的文件夹管理,如上图中的module模块中的样子。 每个模块都有一个makefile,负责当前模块的编译工作。 最顶层的makefile负责整体控制。 build文件夹负责 阅读全文
posted @ 2018-10-01 18:00 周伯通789 阅读(205) 评论(0) 推荐(0)
摘要: 项目类型分析: 这是一种扁平的代码管理方式。makefile直接放到项目文件夹下面。 示例工程: 源码的目录如下: 最终的makefile如下: 第41行是模式规则。 这个makefile非常易于扩展到相同架构的项目。 func.h如下: func.c如下: main.c如下: 小结: 参考: 狄泰 阅读全文
posted @ 2018-10-01 17:56 周伯通789 阅读(187) 评论(0) 推荐(0)
摘要: 程序如下: 结果如下: 改变测试程序: 结果如下; 上面的程序没有找到1,3,5这个序列,因此还有改进的余地。 结果如下: 阅读全文
posted @ 2018-10-01 16:32 周伯通789 阅读(206) 评论(0) 推荐(0)
摘要: 程序如下: 测试程序如下: 结果如下: 程序改进如下: 测试程序如下: 结果如下: 小结: 阅读全文
posted @ 2018-10-01 15:30 周伯通789 阅读(242) 评论(0) 推荐(0)
摘要: 核心思想是从已知的最短路径推算未知的最短路径。 添加程序: 测试程序如下: 结果如下: 小结: 阅读全文
posted @ 2018-10-01 11:24 周伯通789 阅读(273) 评论(0) 推荐(0)
摘要: 添加kruskal算法: 测试程序如下: 结果如下: 小结: 阅读全文
posted @ 2018-10-01 10:37 周伯通789 阅读(233) 评论(0) 推荐(0)
摘要: 图解: 添加prim函数: 测试程序如下: 结果如下: 复杂图的结果如下: 改进函数,支持最大生成树: 测试程序如下: 结果如下: 小结: 阅读全文
posted @ 2018-10-01 07:45 周伯通789 阅读(254) 评论(0) 推荐(0)