返回信息流写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
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8971同步于 2010/6/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
自己写的代码生成工具,欢迎试用
busyter
2010/6/25镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
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.
修正并更新至新版
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
不错不错,鼓励原创~
没下载下来试一下,是不是主要就是做替换操作的呢?
这个用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
嗯嗯 就像:相比图形界面,有的时候觉得命令行也是很好用滴~
【 在 busyter (octopus) 的大作中提到: 】
: 突然发现,原来脚本语言是这么方便好用
很好的log,望版内同学借鉴之~
【 在 guo (计忆邮心|郭) 的大作中提到: 】
: Is this right?
: ========================
: [yonglei@mtkstest13 template]$./tplt.awk name-values.conf
: ...................