加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linux软件开发笔记

(2010-10-02 15:41:58)
标签:

linux

软件

开发

文档

make

makefile

it

分类: ubuntu--时代要求开源
  1. 文件组织

    原则:头文件、代码、文档、数据文件和图形文件分开放到不同的目录下。

  2. 实用工具make

    为了避免大型程序在修改了个别文件后全部编译所有文件,可以使用make完成编译。make能够在一个文件被修改后,自动处理依赖于这个文件的其他文件,使得所有的衍生文件都处于最新的状态。Makefile作为make的输入文件,详细规定了各个文件的依赖关系。请看下面的例子:

    ##开头的行表示注释。

    #Makefile是一个包含一系列规则的文本文件。每个规则定义一个目标所依赖的对象和处#理命令。每个规则由两部分组成:依赖关系和处理命令。其中第二部分可以省略。当更新#一个指定的目标是,make会先检查并且在必要是更新它所依赖的每个对象,然后将目标#文件的修改时间一次与每个依赖对象文件的修改时间进行比较,如果任何一个依赖对象比#目标新,则执行处理命令来更新目标。由于检查依赖关系时,所依赖的对象会被先检查,#而这些对象又可能依赖其他的对象,从而递归下去,形成一个复杂的树形结构。

     

    #这里先定义一个叫做all的默认目标(target)。它依赖于两个文件,一个是编译产生的#可执行文件,叫做main,另一个是Tex文件编译产生的PDF文件,叫main.pdf。这#里只有依赖关系,没有处理命令。当输入命令”make all“时,会使make去检查,更新#mainmain.pdf

    allmain main.pdf

     

    #下面是文件main的依赖关系及处理(链接)命令。注意,所有包含处理命令的行必须以#<Tab>开始。部分依赖关系可以从头文件的包含关系中得到。

    mainmain.o solver.o parameter.o

    gcc -o main main.o solver.o parameter.o

 

#定义关于目标文件main.o的规则。

main.omain.c parameter.h

gcc -g -c main.c

#定义solver.oparameter.o规则

solver.osolver.c solver.h parameter.h

gcc -g -c solver.c

parameter.oparameter.c parameter.h

gcc -g -c parameter.c

#当数据文件被修改时,parameter.c中的相应部分也需要进行修改。这里显示一条信息#提示用户手工修改parameter.c

parameter.cdata1.dat data2.dat

@echo “Data files modified, please revise \”parameter.c\”.”

#main.pdf是用dvipdf命令处理main.dvi得到的:

main.pdfmain.dvi

dvipdf -o main.pdf main.dvi

#main.dvi文件则是用latex处理main.tex产生的:

main.dvimain.tex

latex main.tex

#目标clean用于清除所有衍生文件。

clean:

rm -f main *.o main.pdf main.dvi main.aux main.log

将上述实例保存到程序所在的目录下,文件名就叫Makefile。然后,只要在命令行上执行make all便可生成可执行程序mainmain.pdfmake [文件名]可直接指定检查更新目标。当然对于格式一样的依赖关系,make可用宏简化处理,这里不做展开。

3.文档开发和维护

Doxygen是适用于C语言的文档开发工具。Doxygen要求程序的注释符合一定的格式(内容不在这里展开)。使用步骤是,编写程序和格式化的注释,运行doxygen -g,生成配置文件的模板Doxyfile,直接编辑此文档可获得所需配置文件。将配置文件放在源文件所在目录,在目录下输入doxygen,便会根据注释生成latexhtml格式的文档,存放于doc文件夹中。

4.版本管理和协同工作

版本管理可用CVSSubversion。使用CVS必须连接到提供CVS服务的服务器上。

0

阅读 收藏 喜欢 打印举报/Report
后一篇:无题
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有