讓IAR生成SVN版本號

2021-07-24 20:27:31 字數 1235 閱讀 8331

對於原始碼svn受控的專案,很希望svn版本號作為軟體版本的一部分,在linux使用shell指令碼很容易搞定這個事情,但在windows下的嵌入式專案就麼有那麼容易。最近在iar中成功使用pre-build功能搞定了這個事情,具體見如下的步驟:

1. 首先保證你的svn客戶端支援控制台命令,我使用的是tortoisesvn,在安裝時注意勾選tortoisesvn的命令列支援;

2. 編寫乙個windows指令碼produceversion.bat放到iar的工程目錄下(也即和*.eww同乙個目錄),該指令碼的內容如下:

echo // this file is automatically generated or updated^, please don't edit it. > %1\svnversion.h

echo #pragma once >> %1\svnversion.h

echo #define svn_version \>> %1\svnversion.h

svnversion %1^" >> %1\svnversion.h

exit

3. 在iar的proj->options->build actions->pre-build command line中寫入:cmd /c start $proj_dir$\produceversion.bat $proj_dir$

4. 在編譯的時候iar就會先呼叫produceversion.bat,它將生成乙個svnversion.h的檔案,該檔案的內容為:

// this file is automatically generated or updated, please don't edit it. 

#pragma once

#define svn_version \

171m

5. 在程式中我們就可以包含svnversion.h這個檔案,並且使用svn_version這個巨集了。細心的你應該發現問題了吧,svn_version定義成了171m,171m既不是又不是字串也不是整數,那麼問題來了,如何使用這個結果?關鍵的來了!見下面的**片段:

#define __my_str(v) ""#v""

#define my_str(v) __my_str(v)

static const char svnversion = ;

這樣你就可以在你的**中使用svnversion這個陣列了。

CMake生成版本號

cmake生成版本號 金慶的專欄 原來的cmake需要用shell指令碼生成svn版本號,再作為cmake引數傳入。cmake呼叫指令碼示例 bin sh cmake.sh servercoderoot code server coderevnum svn info grep revision aw...

python 自動生成版本號

本文適用於使用subversion版本控制的讀者.前一段時間研究了一下tortoisesvn的源 發現它使用 nant subwcrev.exe 來自動生成版本號的.subwcrev.exe 是tortoisesvn下的乙個命令列工具,安裝了tortoisesvn 就找到它.這裡補充一下tortoi...

git 生成版本號 git describe

如果使用git命令列工具,產生版本號?git describe如果符合條件的tag指向最新提交則只是顯示tag的名字 否則會有相關的字尾來描述該tag之後有多少次提交以及最新的提交commit id。不加任何引數的情況下,git describe 只會列出帶有注釋的tag git describe ...