通过shell脚本生成C代码例程:
#!/bin/sh
target=$1
BUILDER_VERSION_BRANCH=${VERSION_BRANCH}
BUILDER_VERSION_MAJOR=${VERSION_MAJOR}
BUILDER_VERSION_MINOR=${VERSION_MINOR}
BUILDER_VERSION_EXTRA=${VERSION_EXTRA}
BUILDER_VERSION_REVNO=${VERSION_REVNO}
BUILDER_VERSION_STAGE=${VERSION_STAGE}
BUILDER_CMPL_YEAR=`date +%Y | sed -e 's/^0//g'`
BUILDER_CMPL_MONTH=`date +%m | sed -e 's/^0//g'`
BUILDER_CMPL_DATE=`date +%d | sed -e 's/^0//g'`
BUILDER_CMPL_TIME="`date +%T`"
echo "/* Automatically generated file; DO NOT EDIT. */" > $target
echo "char *builder_version_branch(void)" >> $target
echo "{" >> $target
echo " return \"${BUILDER_VERSION_BRANCH}\";" >> $target
echo "}" >> $target
echo "unsigned int builder_version_major(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_VERSION_MAJOR};" >> $target
echo "}" >> $target
echo "unsigned int builder_version_minor(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_VERSION_MINOR};" >> $target
echo "}" >> $target
echo "unsigned int builder_version_extra(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_VERSION_EXTRA};" >> $target
echo "}" >> $target
echo "unsigned int builder_version_revno(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_VERSION_REVNO};" >> $target
echo "}" >> $target
echo "char *builder_version_stage(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_VERSION_STAGE};" >> $target
echo "}" >> $target
echo "unsigned int builder_cmpl_year(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_CMPL_YEAR};" >> $target
echo "}" >> $target
echo "unsigned int builder_cmpl_month(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_CMPL_MONTH};" >> $target
echo "}" >> $target
echo "unsigned int builder_cmpl_date(void)" >> $target
echo "{" >> $target
echo " return ${BUILDER_CMPL_DATE};" >> $target
echo "}" >> $target
echo "char *builder_cmpl_time(void)" >> $target
echo "{" >> $target
echo " return \"${BUILDER_CMPL_TIME}\";" >> $target
echo "}" >> $target
执行上面的shell。
./builder.sh abc.c
生成一下C代码:
/* Automatically generated file; DO NOT EDIT. */
char *builder_version_branch(void)
{
return "";
}
unsigned int builder_version_major(void)
{
return ;
}
unsigned int builder_version_minor(void)
{
return ;
}
unsigned int builder_version_extra(void)
{
return ;
}
unsigned int builder_version_revno(void)
{
return ;
}
char *builder_version_stage(void)
{
return ;
}
unsigned int builder_cmpl_year(void)
{
return 2016;
}
unsigned int builder_cmpl_month(void)
{
return 8;
}
unsigned int builder_cmpl_date(void)
{
return 16;
}
char *builder_cmpl_time(void)
{
return "10:26:48";
}