Ultraedit高级应用(1) - 快速生成远程工程

http://cpiz.com/blog/?p=205

 

由于目前我从事的开发工作只能在Unix上编译和测试,开发人员一般都习惯于在Windows下使用Ultraedit(以下简称UE)编辑代码,然后再FTP上传,这注定了IDE将与我们无缘。在无比怀念Eclipse、Visual Studio的同时,我尝试了很多Windows下优秀的C++开发工具,不断地比较和取舍后最终还是回归了UE。
UE曾经是16进制编辑器的代名词,强大的列编辑模式目前也无人能及,多年的演进让它的功能丰富了到让人望而生畏(想想那一屏高的右键菜单),幸好它还拥有着同样强大的可定制性。经过一番配置和二次开发后,现在我开发后台已经颇为顺手,下面介绍一下我的定制过程,均基于我当前在用的v15.10.0.1028版本。

我的开发方式要求我们的工具要有远程编辑功能;为了方便,我还希望能以目录树的方式,随选随改;工作的网络环境不是很理想,希望切换远程目录时不会停顿;我的编辑仅限于代码文件,不希望编译过程中产生的中间文件(包括中间代码文件)干扰我的视线。在我尝试过的众多文本编辑器和IDE中,只有UE优雅地解决了这些问题。

UE中的工程同时支持本地文件和远程文件,支持多层虚目录,只须将FTP上的源文件组织成一个工程,即可快速编辑,文件也可以保持原来的目录层次,避免了FTP方式的频繁加载目录和中间文件的干扰。

我的工作可能涉及5个子系统,近200个模块,将这些模块人工组织成UE工程明显不现实。研究工程文件发现,一个工程共分为3部分,头部是格式声明,然后是目录层次,最后是每个目录下的文件全路径,如下:



[Project ID] Signature=UE Proj: v.1 [Project Information] Use Relative Directory=1 Relative to Project File=1 [Group] 0=busiaccep_svr 1=busiaccep_svr - busicompleteintfmgr 2=busiaccep_svr - busicompleteintfmgr - kernel 3=busiaccep_svr - busicompleteintfmgr - include 4=busiaccep_svr - busicompleteintfmgr – mgr …… [Files - busiaccep_svr - busicompleteintfmgr - kernel] 0=FTP::182ng//home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|interfaceip_db.obd 1=FTP::182ng//home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|public_intf_db.obd 2=FTP::182ng//home/blahblahblah/busiaccep_svr/busicompleteintfmgr/kernel|Makefile [Files - busiaccep_svr - busicompleteintfmgr - include] 0=FTP::182ng//home/blahblahblah/busiaccep_svr/busicompleteintfmgr/include|IUserProm_mgr.h 1=FTP::182ng//home/blahblahblah/busiaccep_svr/busicompleteintfmgr/include|IUserCell_mgr.h ……  
这应该可以写一个Shell脚本,遍历UNIX上的源代码目录,生成项目文件,下载到Windows中用UE打开,最终证实是可行的。脚本如下:

#!/bin/ksh # # 根据当前目录生成UltraEdit工程文件内容 # 将生成的内容存储为.prj文件, 即可作为UE工程打开 # # caijw 创建 2009-5-6 13:50:30 # # 参数 FILTER="Makefile .c .cpp .h" FTP_LINK="182ng" CUR_PATH=`pwd` # 生成项目头部信息 echo "[Project ID]" echo "Signature=UE Proj: v.1" echo "[Project Information]" echo "Use Relative Directory=1" echo "Relative to Project File=1" # 生成目录结构信息 echo "[Group]" find . -type d | egrep -v //CVS$ | egrep -v .svn | egrep -v ^/.$ | awk -F"/" '{print NR-1"="substr($0, 3)}' | sed 's//// - /g' # 生成文件列表 find . -type f | egrep -v //CVS// | egrep -v //.svn// | egrep -v ^/.$ | awk '{print substr($0, 2)}' | awk ' BEGIN{ FS="/"; LAST_PATH="/DEV/NULL"; FILE_IDX = 0; } { SCAN_PATH = substr($0, 0, last_index($0, "/") - 1); UE_PATH=SCAN_PATH; gsub("/", " - ", UE_PATH); if(SCAN_PATH != LAST_PATH) { print "[Files"UE_PATH"]"; LAST_PATH = SCAN_PATH; FILE_IDX = 0; } print FILE_IDX"=FTP::'$FTP_LINK'//'${CUR_PATH}'"SCAN_PATH"|"$NF; FILE_IDX++; } # # 查找某字符串在另一字符中出现的最后一次位置 # function last_index(strsrc, strsub){ idx = index(strsrc, strsub); if (idx != 0){ return idx + last_index(substr(strsrc, idx + 1), strsub); }else{ return 0; } } ' # 完成  

使用前修改脚本内容,将FTP_LINK="182ng"中的182ng修改为UE中FTP的连接名称。建议名称尽量短小,以减少最终生成的项目文件的体积。



将脚本文件放到代码的最上级目录,执行chmod +x ue_prj.sh添加可执行权限,执行ue_prj.sh > openboss.prj,即可生成该目录下所有文件组织成的UE工程,下载至Windows中即可用UE打开,效果如下:


注意:

生成项目前先up一下代码,保证生成的项目是最新的

对曾经编译的模块,最好gmake clean_all一次,避免中间文件也加入项目中


你可能感兴趣的:(Ultraedit高级应用(1) - 快速生成远程工程)