99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

讓你的C程序,自動打印版本信息

一、軟件管理

稍微上點規模的軟件開發往往周期都非常長,

中間會產生很多臨時版本,

這些臨時版本往往會有各種各樣的bug,

由于項目參與的人員眾多、水平參差不齊,

軟件分支眾多、功能復雜,

經常會有各種稀奇古怪的事情發生,

經常遇到一個問題就是: 某個測試版本測出了問題, 但是研發卻發現服務器中沒有對應的版本與之對應。

有的公司要求所有bug必須有始有終,

一旦bug無法復現,

這時候測試和開發免不了一陣扯皮,

這影響到績效啊!!!

所以版本管理非常重要。

現在大多數公司軟件都是采用git管理,

對于嵌入式軟件,

廠家提供的sdk,往往都有git本地倉庫,

嵌入式軟件一般規模都不大,

所以公司對軟件版本管理往往并不會太嚴格,

很多嵌入式軟件工程師都沒能養成良好的軟件管理習慣。

本文主要講解如何在編譯的時候就給軟件自動添加更新軟件版本的功能,

程序運行的開始就將版本打印出來,

配合git,更方便的定位軟件版本問題。

二、軟件版本號

公司的軟件版本號往往都比較復雜,

本文為便于讀者理解,將版本號的定義精簡如下:

僅僅打印版本發布的時間,

后續彭老師會單獨在寫一篇,一個比較經典的版本號管理實例文章,有興趣的老鐵可以關注下彭老師的號。

三、原理

我們可以定義一個頭文件sw_version.h專門存放版本信息的宏,

#define SW_VERSION “2024-09-09-7”

主程序包含該頭文件,

并在程序運行的開頭位置,打印改宏。

編譯 過程中,編譯腳本mk.sh自動將當前時間等信息更新到頭文件sw_version.h

這樣我們編譯出的可執行程序app就自帶了最新的版本信息。

更新頭文件sw_version.h中的內容,我們可以字節編寫c程序修改,也可以直接使用命令date,

本文通過后者來講解。

四、命令date

date選項

date 能用來顯示或設定系統的日期和時間:

  • 常見選項
--help:顯示輔助信息
--version:顯示date命令版本信息
-u:顯示目前的格林威治時間
-d:做日期時間相關的運算- - date = 'dateStr' :做時間的相關運算

本文主要用到顯示日期和時間的功能:

  • 1) 顯示系統當前日期時間
[root@hadoop ~]# date
  • 2) 以指定格式顯示日期時間
[root@hadoop ~]# date '+%Y-%m-%d %H:%M:%S'

執行結果:

date格式標記日期、時間

date 能用來顯示或設定系統的日期和時間,在顯示方面,使用者能設定欲顯示的格式,格式設定為一個加號后接數個標記

日期方面:

%a : 星期幾 (Sun..Sat)%A : 星期幾 (Sunday..Saturday)%b : 月份 (Jan..Dec)%B : 月份 (January..December)%c : 直接顯示日期和時間%d : 日 (01..31)%D : 直接顯示日期 (mm/dd/yy)%h : 同 %b%j : 一年中的第幾天 (001..366)%m : 月份 (01..12)%U : 一年中的第幾周 (00..53) (以 Sunday 為一周的第一天的情形)%w : 一周中的第幾天 (0..6)%W : 一年中的第幾周 (00..53) (以 Monday 為一周的第一天的情形)%x : 直接顯示日期 (mm/dd/yyyy)%y : 年份的最后兩位數字 (00.99)%Y : 完整年份 (0000..9999)

時間方面:

%%: 打印出%%n : 下一行%t : 跳格%H : 小時(00..23)%k : 小時(0..23)%l : 小時(1..12)%M : 分鐘(00..59)%p : 顯示本地AM或PM%P : 顯示本地am或pm%r : 直接顯示時間(12 小時制,格式為 hh:mm:ss [AP]M)%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數%S : 秒(00..61)%T : 直接顯示時間(24小時制)%X : 相當于%H:%M:%S %p%Z : 顯示時區

若是不以加號作為開頭,則表示要設定時間,而時間格式為

 MMDDhhmm[[CC]YY][.ss]
MM 為月份,DD 為日,hh 為小時,mm 為分鐘,CC 為年份前兩位數字,YY 為年份后兩位數字,ss 為秒數

五、腳本實例

腳本實例:

1 #!/bin/bash  2   3 str_front=#define SW_VERSION  4 quotation="\""  5 version_file=sw_version.h  6   7 rm $version_file  8 echo $str_front $quotation$(date '+%Y-%m-%d-%H')$quotation >> $version_file 
* 3行:定義環境變量str_front,用于保存字符串 `#define SW_VERSION ` * 4行:定義環境變量quotation,保存字符`"`* 5行:定義環境變量version_file,保存頭文件**sw_version.h**名字* 7行:刪除頭文件**sw_version.h*** 8行:更新最新版本信息到頭文件**sw_version.h**      借助date命令拼接成下面字符串  #define SW_VERSION “2024-09-09-7”   將該字符串信息,通過echo命令重定向到頭文件**sw_version.h**      >> 表示重定向,信息覆蓋 

執行結果

大家可以根據自己需要,自己定制自己需要的版本號格式,

同時也可以把該腳本嵌入到自己的編譯腳本中。

參考:

https://blog.csdn.net/qq_42246689/article/details/83621262?spm=1001.2014.3001.5506
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 3
關注 181
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 久久久久人妻一区精品 | 嗯啊免费网站 | 久久久品| 欧美亚洲中日韩中文字幕在线 | 免费一区二区三区在线观看 | 91精品国产综合久久福利软件 | aaa级精品久久久国产片 | 精品人妻无码专区在中文字幕 | 国产一区二区三区四区成男人 | 99久久影视| 日本高清不卡的在线 | аⅴ资源天堂资源库 | 国产性生大片免费观看性 | 亚洲人成精品久久久久 | 欧美性播放 | 亚洲精品国产福利 | 亚洲精品AV一区午夜福利 | 亚洲国产精品va在线看黑人动漫 | 嫩草视频网 | 亚洲双插 | 中文在线精品 | 任你操av | 国产日韩欧美一区二区三区乱码 | 日本一区二区三区视频中文字幕 | 伊人久久一区二区三区无码 | 久久久www免费人成精品 | 毛片18 | 她似遥上月短剧免费观看 | 国产精成人品 | 人妻熟女av| 成人活性生交大片免费看 | h网站久久久 | 精品卡一卡二卡3卡高清乱码 | 国内不卡的一区二区三区中文字幕 | 精品国产日韩亚洲一区 | 妓女嫖客叫床粗话对白 | 在线观看国产成人av天堂 | 日本卡一卡二卡乱码三卡四码 | 精品国产欧美日韩不卡在线观看 | 日本爽快片18禁免费看 | 老人内射视频代码免费视频 |