用C++语言做Linux开发工具之粘合剂Makefile

系统 Linux
这篇报道以粘合剂Makefile为重点,讲述了用C++语言做Linux开发工具粘合剂Makefile在开发中的重要意义,希望对大家在开发中有所帮助

我想通过“粘合剂”这个词来表达将多个工具粘合起来的“胶水”。例如,通过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++的。

【编辑推荐】

  1. Linux开发人员风烛残年 后续力量出现断层
  2. 腾讯Linux QQ团队现招聘:Linux开发与测试工程师
  3. IBM呼吁Linux开发者勿模仿Windows用户界面
  4. Ubuntu Linux开发平台带进小电脑和嵌入式系统
  5. 关于使用虚拟机嵌入式Linux开发前的必要准备

 

责任编辑:chenqingxiang
相关推荐

2010-05-28 13:53:41

Linux开发工具

2010-05-28 14:44:42

Linux开发工具

2012-05-29 09:21:21

API

2015-10-19 10:53:03

2010-05-28 14:14:37

Linux开发工具

2010-01-21 10:44:59

Visual C++

2010-01-11 10:19:57

C++开发工具

2010-01-08 17:01:46

C++开发工具

2010-01-11 15:02:10

Visual C++

2010-05-28 13:38:29

Linux开发工具

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++

2010-06-04 17:26:53

Linux 开发工具

2010-01-19 14:54:58

Visual C++

2010-01-26 17:44:32

Visual C++开

2017-01-05 14:28:43

Linux内核代码源码

2017-04-11 08:50:22

应用开发云服务开源

2010-06-03 12:41:45

Linux 开发工具

2010-06-07 14:13:10

Linux 开发工具

2023-12-01 08:09:08

点赞
收藏

51CTO技术栈公众号