摘要:
阅读全文
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)
浙公网安备 33010602011771号