Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682806
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2010-08-29 19:48:12

Andrew Huang
 
带学生移植大量程序,也在实际项目应用其管理规范。因此将其定名为bluedrum linux 移植规范.
 
这个规范的有如下几个要点,它合适个人开发,或小团队(即无固定的中心服务器)的开发。
 
理论上可以合适大团队开发,但需要在实践开发
 
 1.移植项目要有一个总的项目目录,这个目录必须在NFS发布目录,
        最好也是Samba和FTP发布目录.
 
     我建议的做法是创建一个workspace用户,创建在/home/workspace目录,这个目录被发布成NFS/Samba/FTP共享目录。每一个项目都建在/home/workspace之下。
 
     优点:编辑,编译在HOST上运行,嵌入式LINUX程序通过NFS直接运行.
         如果习惯用Windows下工具来管理(beyend Compare/Source Insight)源码.
    
     所以一般我建议学员,在自己的机器一安装好,立马建一个自己用户名目录,比如我的就是固定会建好/home/hxy,全部设成各种共享目录。为了减少权限上的麻烦,最好把权限全打开
              chmod -R 777 /home/hxy
    
    

  2.所有输出文件(编译出来库,头文件,可执行文件,测试数据)将集中输出项目目录 output/
               比如 arm-linux输出到 output/arm-linux
              按OS来区别主要考虑到一个项目很多情况要在多个平台编译比如 x86-linux,mips-linux或者wince,windows
        按个OS分开,在项目开发时各不同版本交替使用时,大家互不干扰 。
 
        另外在小团队下开发,开发人员只需要把output打包交给测试人员即可进行测试,无需把整个源码交给对方,这样方便管理.
 
   
    3.第三方库要在项目目录下libs解开编译
           这样设计是一是防止库太多把自己的项目主程序源码淹没。
           第二个是可以在不同项目目录简单复杂重用即可。或者在简单同一类的小项目可以归并到一个目录下
 
     4.主控应用单独在项目目录
              主要是为了编译和调试方便
 
    5.在项目目录下可以建其它辅助目录
           docs/ 
        还有一个是si_prj.即source insight 的项目文件目录。(注意新建好SI项目后,要打一个包备份,因为SI的项目文件在Samba路径上不正常关闭,很容易崩溃。崩溃后简单解压备份即可)
 
        
  6.小团队的源码控制最合适的系统是git。
       它不需要专门中心服务器。  它会项目目录下建立.git目录
 
   7.在Windows下源码路径管理
       如果把整个源码迁移到Windows目录, 需要调用subst命令把项目目录映射虚拟盘符
      如果是Samba目录下,可以直接映射Samba为WINDOWS的一个虚拟盘符。
  
       这个在移动环境下优为重要,因为你用移动硬盘接在不同设备运行虚拟机,必然会导致映射的盘符不一样。通过这个办法,可以始终保持盘符不变,这样WINDOWS下工具比如SI就会保持不会移动
 
  采用固定的项目结构,可以在以后的项目中最大程度减少管理上或移植上问题,另外在多人开发时,相同的结构可以在交流和沟通上减少麻烦。
 
   这一系列下的所有文章都是用如下结构来构造的。因此只要这个规范,大部分的脚本的编译可以直接使用
 
 
实际工程样例:
  以比较简单的Madplayer为例可按如下目录结构建立
 
   /home/hxy
      |
      +-- madplayer
             |
             +-- docs
             |
             +-- si_prj
             |
             +-- libs
             |     |
             |     +-- libid3tag
             |     |
             |     +-- libmad
             |
             +-- madplayer
             |
             +-- output
                   |
                   +--arm-linux --+ -- bin
                                  |  
                                  + -- lib
                                  |      
                                  + -- include
                                  |
                                  + -- share 
阅读(1754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~