用C++语言做Linux开发工具之粘合剂Makefile
来源:互联网 发布:软件测试阶段划分 编辑:程序博客网 时间:2024/04/30 01:05
我想通过“粘合剂”这个词来表达将多个工具粘合起来的“胶水”。例如,通过shell脚本,我们可以把OS命令,sed指令,awk指令,其它脚本文件等串联起来,发挥它们的合力。在linux C++编程中,我们不可避免地会使用用C++语言做Linux开发工具粘合剂makefile文件。通过,它我们可以把编译指令,生成文档操作,清除操作等等串联起来。从某种意义上来看,它也相当于一个粘合剂。
用C++语言做Linux开发工具粘合剂Makefile的出发点是,维护好一个项目中众多文件的依赖关系,由此得到一个源程序的拓扑图。当我们只修改图中某个结点时,重新编译时就只需要将拓扑图中关联的链路进行编译就好了。由此,大大缩短了编译的时间。make有两大概念:dependencies和rules。规则rule即针对每一个依赖关系 dependency定义一个操作规则。这个细粒度的分离,就可以使我们可以定制软件构建的行为。例如,修改使用的编译器,修改includepath, 修改libpath, 修改编译选项等等。我们常见的VC中的nmake,功能和make是类似的。
make使用的重点和难点是编写用用C++语言做Linux开发工具粘合剂Makefile文件。Makefile的语法相对其它语言来说是很不一样的,我们要特别注意TAB键和空格键的区别。有很多工具可以用来帮助我们生成Makefile。最出名的就是GNU的autoconf了。一个GNU程序的编写,需要autoscan, aclocal, autoconf, automake这四个工具。
我们知道GNU软件安装的三步曲是:./configure, make, make install。其中./configure就是根据autoconf, alocal等工具生成一个makefile文件。make指令就是调用make指令来根据makefile文件的规则来编译源程序。而make install就是执行makefile中的install规则指出的操作(一般是copy操作)。而make clean就是执行makefile中的clean规则指出的操作(一般是rm操作)。我们用Eclispe+CDT开发Managed C++ Project时,它就是通过objects.mk,subdir.mk,sources.mk三个文件来生成Makefile。我们注意观察编译时的输出信息,就可以看到显示的Makefile文件的内容。
可以说,如果想编译出跨平台的C++程序,那么用C++语言做Linux开发工具Makefile是一种最方便的机制。
OCI公司为Douglas C.Schmidt的ACE,TAO开源社区编写了一段伟大的perl脚本--MPC。它由平台信息,一个规则文件,源代码,生成用户想要的工程文件,例如Make, Nmake, Visual C++ 6, Visual C++ 7等等。Google Web Tookit, Celtix做的事情与之类似,不过它们是针对JAVA的,而MPC是针对C++的。
0 0
- 用C++语言做Linux开发工具之粘合剂Makefile
- 用C++语言做Linux开发工具之粘合剂Makefile
- Linux c 开发 - Makefile工具
- Linux下C语言开发之Makefile创建
- Linux下C语言开发(Makefile编写)
- linux环境开发工具之makefile文件
- 浅析Linux开发工具之Makefile
- Linux开发工具之Makefile(上)
- Linux开发工具之Makefile(下)
- C语言-----开发工具的使用make和makefile
- linux下做c语言开发
- 嵌入式Linux C语言开发工具
- 嵌入式Linux c语言开发工具
- Linux+C语言开发+Makefile的用法总结
- linux下的C语言开发(makefile编写)
- linux下的C语言开发(makefile编写)
- linux下的C语言开发(makefile编写)
- linux下的C语言开发(makefile编写)
- 梳理一下IceHouse Neutron新增加的Blueprint
- 一个js文件如何调用另一个js文件
- 0049 用jad对class文件进行(批量)反编译【基础】
- Python 设计模式——用模式改善软件设计
- 手机常识(二)
- 用C++语言做Linux开发工具之粘合剂Makefile
- 程序中抛出异常
- c
- 用Python教你如何“养”一只DHT爬虫
- hdu3594 强连通 tarjan
- 并查集带删除操作uva11987(好)
- Linux实时内存数据库eXtremeDB性能
- Android源码的git下载地址
- solr教程,值得刚接触搜索开发人员一看