BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8971同步于 2010/6/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

自己写的代码生成工具,欢迎试用

busyter
2010/6/25镜像同步11 回复
写C/C++嵌入式程序时,经常需要写一些重复的代码,比如写Makefile、模块初始化代码等,这些内容大同小异,如果能够把相同的形成模板,把不同的内容做成配置文件,岂不是很方便? 查了很多这方面的工具,没有一个符合我的要求的,这么简单的功能,就自己写吧。使用AWK脚本写的,原因是语法简单比较容易学习。工具很小,短短一百行代码,能给大家带来方便我就很欣慰了。 --------------------------------------------------------------------------- 以下是演示模板: 附件(143.2KB) template.tar.gz 字符驱动模板: 附件(1.5KB) char_dev.tar.gz 06.25-修正了在某些发行版上运行错误的情况,简化了信息输出,并在RedHat4上测试通过。非常感谢六楼的bug report。 06-27-修正某些文件内容没有替换的Bug。并上传生成简单字符驱动的模板。 1.解压程序 $ tar xzvf template.tar.gz $ cd template 2.重要的文件有: (1)tplt.awk,脚本文件,需要使用awk工具。系统如果没有安装的话,可以使用apt-get install之。可能需要chmod +x (2)name-values.conf,配置文件,name=value对,用来替换相应的条目。文件名或者内容中含有${name}$形式的字符串将会被替换为value。 (3)其他的是一些名字或内容中含${}$的测试文件夹和文件,用来测试程序正确性 3.运行 $ ./tplt.awk name-values.conf 4.结果 所有的文件夹名、文件名、文件内容中含有${name}$都被替换成了value。没有在name-values.conf中定义的name不会被替换。 --------------------------------------------------------------------------- 推荐用法 1.将自己写好的一个可以套用的项目; 2.拷贝./tplt.awk 以及name-values.conf到该项目文件夹下,修改name-values.conf,设定自己项目中需要的模板参数名及默认值; 3.对该项目文件夹下的所有文件使用${参数名}$进行模板化;完成之后压缩成tar形式 每次需要新建一个相似的项目时,解压之,然后修改name-values.conf里定义的参数值,运行./tplt.awk name-values.conf后,即可进行编码 --------------------------------------------------------------------------- PS: 测试环境为Ubuntu 9.04 以及 RHEL 4
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
busyter机器人#1 · 2010/6/25
谢谢大家支持,欢迎试用
s122008机器人#2 · 2010/6/25
顶,楼主太猛了
lanphon机器人#3 · 2010/6/25
lz牛人哇 不过大部分时间我都是找相似的东西改吧改吧用的。。
busyter机器人#4 · 2010/6/25
突然发现,原来脚本语言是这么方便好用
guo机器人#5 · 2010/6/25
Is this right? ======================== [yonglei@mtkstest13 template]$./tplt.awk name-values.conf ******CONFIGURE START******* project_name = HelloWorld project_author = zhangtao project_version = 1.0 project_create_data = 2010.06.23 project_hello_str = Hello, AWK! ******CONFIGURE END********* FILE IGNORED : 2010 name-values.conf RENAME : 02:29 ${project_name}$ TO 02:29 HelloWorld mv: cannot stat `/home/yonglei/tmp/template/02:29 ${project_name}$': No such file or directory +FOLDER: 02:29 HelloWorld ls: /home/yonglei/tmp/template/02:29 HelloWorld: No such file or directory RENAME : 2010 ${project_name}$_main.c TO 2010 HelloWorld_main.c mv: cannot stat `/home/yonglei/tmp/template/2010 ${project_name}$_main.c': No such file or directory FILE IGNORED : 2010 HelloWorld_main.c RENAME : 2009 ${project_name}$${project_author}$ TO 2009 HelloWorldzhangtao mv: cannot stat `/home/yonglei/tmp/template/2009 ${project_name}$${project_author}$': No such file or directory FILE IGNORED : 2009 HelloWorldzhangtao FILE IGNORED : 2010 tplt.awk FILE IGNORED : 2010 ${WRONG_NAME} ====================== 環境: [yonglei@mtkstest13 ~]$uname -a Linux mtkstest13 2.6.18-8.el5xen #1 SMP Thu Mar 15 19:56:43 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux [yonglei@mtkstest13 ~]$awk --version GNU Awk 3.1.5 Copyright (C) 1989, 1991-2005 Free Software Foundation.
busyter机器人#6 · 2010/6/25
修正并更新至新版 RHEL 4输出如下: ******CONFIGURE START******* project_name = HelloWorld project_author = zhangtao project_version = 1.0 project_create_data = 2010.06.23 project_hello_str = Hello, AWK! ******CONFIGURE END********* RENAME : ${project_name}$ TO HelloWorld +FOLDER: HelloWorld RENAME : ${project_name}$.bin TO HelloWorld.bin RENAME : ${project_name}$_main.c TO HelloWorld_main.c PROCESSED: HelloWorld_main.c RENAME : ${project_name}$${project_author}$ TO HelloWorldzhangtao RENAME : ${project_name}$_${project_version}$ TO HelloWorld_1.0 +FOLDER: HelloWorld_1.0 +FOLDER: folder name with spaces RENAME : ${project_name}$.bin TO HelloWorld.bin RENAME : ${project_name}$_main.c TO HelloWorld_main.c PROCESSED: HelloWorld_main.c RENAME : ${project_name}$.bin TO HelloWorld.bin RENAME : ${project_name}$_main.c TO HelloWorld_main.c PROCESSED: HelloWorld_main.c RENAME : ${project_name}$${project_author}$ TO HelloWorldzhangtao RENAME : ${project_name}$_main.c TO HelloWorld_main.c PROCESSED: HelloWorld_main.c RENAME : ${project_name}$${project_author}$ TO HelloWorldzhangtao
hobby机器人#7 · 2010/6/27
不错不错,鼓励原创~ 没下载下来试一下,是不是主要就是做替换操作的呢? 这个用vim或者其他的文本编辑工作也能做吧,只不过还是没有脚本这样方便。 【 在 busyter (octopus) 的大作中提到: 】 写C/C++嵌入式程序时,经常需要写一些重复的代码,比如写Makefile、模块初始化代码等,这些内容大同小异,如果能够把相同的形成模板,把不同的内容做成配置文件,岂不是很方便? 查了很多这方面的工具,没有一个符合我的要求的,这么简单的功能,就自己写吧。使用AWK脚本写的,原因是语法简单比较容易学习。以下是测试模板: [upload=1][/upload] 修正了在某些发行版上运行错误的情况,简化了信息输出,并在RedHat4上测试通过。非常感谢六楼的bug report。 1.解压程序 $ tar xzvf template.tar.gz $ cd template 2.重要的文件有: (1)tplt.awk,脚本文件,需要使用awk工具。系统如果没有安装的话,可以使用apt-get install之。可能需要chmod +x (2)name-values.conf,配置文件,name=value对,用来替换相应的条目。文件名或者内容中含有${name}$形式的字符串将会被替换为value。 (3)其他的是一些名字或内容中含${}$的测试文件夹和文件,用来测试程序正确性 3.运行 $ ./tplt.awk name-values.conf 4.结果 所有的文件夹名、文件名、文件内容中含有${name}$都被替换成了value。没有在name-values.conf中定义的name不会被替换。 PS: 测试环境为Ubuntu 9.04 以及 RHEL 4
hobby机器人#8 · 2010/6/27
嗯嗯 就像:相比图形界面,有的时候觉得命令行也是很好用滴~ 【 在 busyter (octopus) 的大作中提到: 】 : 突然发现,原来脚本语言是这么方便好用
hobby机器人#9 · 2010/6/27
很好的log,望版内同学借鉴之~ 【 在 guo (计忆邮心|郭) 的大作中提到: 】 : Is this right? : ======================== : [yonglei@mtkstest13 template]$./tplt.awk name-values.conf : ...................