关于如何在make一个Linux下的C/C++工程时,自动添加版本号、编译日期等信息
2017-01-20 00:35
701 查看
本篇的目的:在makefile里,将系统当前的时间传递进待编译的C/C++工程中,用以指示编译执行的时间,以及版本信息等。
不多说了,先来看效果:
当前时间:2017.01.20 0:29
编译完成后运行效果:
ubuntu@ubuntu:~/Desktop/ccc$ ./test
============================
Soft version:V1.01
compile date:2017.01.20 0:29
============================
。。。。。。
过了8分钟后,再次编译运行:
ubuntu@ubuntu:~/Desktop/ccc$ ./build.sh
rm -f auto_version.h test main.o
Build start...
`touch auto_version.h`
cc -c -o main.o main.c
gcc main.o auto_version.h -o test
Build OK
ubuntu@ubuntu:~/Desktop/ccc$
ubuntu@ubuntu:~/Desktop/ccc$
ubuntu@ubuntu:~/Desktop/ccc$ ./test
============================
Soft version:V1.01
compile date:2017.01.20 0:37
============================
注意时间变化。
下面贴代码:
这就是关于如何make一个Linux下的C/C++工程时,自动添加版本号、编译日期等信息:
//main.c
//Makefile
//build.sh
接下来,chmod +x build.sh
执行 ./build.sh
编译成功。
运行./test
即可看到如上效果
不多说了,先来看效果:
当前时间:2017.01.20 0:29
编译完成后运行效果:
ubuntu@ubuntu:~/Desktop/ccc$ ./test
============================
Soft version:V1.01
compile date:2017.01.20 0:29
============================
。。。。。。
过了8分钟后,再次编译运行:
ubuntu@ubuntu:~/Desktop/ccc$ ./build.sh
rm -f auto_version.h test main.o
Build start...
`touch auto_version.h`
cc -c -o main.o main.c
gcc main.o auto_version.h -o test
Build OK
ubuntu@ubuntu:~/Desktop/ccc$
ubuntu@ubuntu:~/Desktop/ccc$
ubuntu@ubuntu:~/Desktop/ccc$ ./test
============================
Soft version:V1.01
compile date:2017.01.20 0:37
============================
注意时间变化。
下面贴代码:
这就是关于如何make一个Linux下的C/C++工程时,自动添加版本号、编译日期等信息:
//main.c
#include <stdio.h> #include "auto_version.h" int main(int argc,char *argv[]) { #ifdef VER_AUTO printf("============================\n"); printf("Soft version:%s\n",VERSION); printf("compile date:%s\n",DATE); printf("============================\n"); #else printf("============================\n"); printf("creat by ZhongKunjiang\n"); printf("mail:zhongkunjiang@hotmail.com\n"); printf("============================\n"); #endif return 0; }
//Makefile
VERSION_STRING := "V1.01" DATE_STRING := `date "+20%y.%m.%d %k:%M"` .PHONY:all all:test test:main.o auto_version.h gcc $^ -o $@ main.o:main.c auto_version.h auto_version.h: `touch auto_version.h` @echo "#define VER_AUTO 1" > auto_version.h # > :覆盖文本原来内容 @echo "#define VERSION \"$(VERSION_STRING)\"" >> auto_version.h # >> :追加内容到文本末尾 @echo "#define DATE \"$(DATE_STRING)\"" >> auto_version.h # >> :追加内容到文本末尾 clean: rm -f auto_version.h test main.o
//build.sh
set -e #告诉bash如果任何语句的执行结果不是true则退出 make clean echo -e "\e[36m""Build start...""\e[m" # "\e[36m" :设置打印颜色,"\e[m" :清除打印颜色 make all echo -e "\e[36m""Build OK""\e[m"
接下来,chmod +x build.sh
执行 ./build.sh
编译成功。
运行./test
即可看到如上效果
相关文章推荐
- 在Linux平台下如何编译一个C++工程
- 在Linux平台下如何编译一个C++工程
- 在Linux平台下如何编译一个C++工程
- 关于linux下执行脚本编译C++:需要使用make命令和makefile
- linux下如何编译c++工程项目
- 如何将make编译之后的错误信息重定向到一个文件中
- linux下如何编译c++工程项目
- 用mingw编译C++工程;程序里面的cout<<"aaa";cmd运行c++程序,aaa内容在控制台不显示,如何将aaa输出到控制台屏幕并将控制台内容写到一个文件中。
- 在linux环境下编译一个c/c++工程
- linux下如何编译c++工程项目
- linux C++ make 实战--建立一个最简单的工程
- Ecplise创建一个类的时候如何自动添加作者,时间等信息
- linux下如何编译c++工程项目
- [技巧靠点点滴滴的积累] Linux平台下如何将make编译的所有信息保存至文件?
- [技巧靠点点滴滴的积累] Linux平台下如何将make编译的所有信息保存至文件?
- 如何在VC中为工程添加一个编译选项
- 如何在VC中为工程添加一个编译选项
- debug 添加c/c++特性后的and2.3.7工程时禁止cdt自动编译
- 在linux环境下编译一个c/c++工程
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间