c/c++中將git當前版本資訊編譯到可執行檔案中
使用簡單Makefile,則可直接新增巨集定義:
CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"使用CMake,在CMakeList.txt中新增:
exec_program(
"git"
${CMAKE_CURRENT_SOURCE_DIR}
ARGS "log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1"
OUTPUT_VARIABLE VERSION_SHA1 )
add_definitions( -DGIT_SHA1="${VERSION_SHA1}" )
然後在程式碼中根據巨集GIT_SHA1來進行相應的列印輸出,方便追蹤對應的版本資訊。
ps: 如果不使用巨集,也可替換原始檔方法,或者CMakefile中使用configure_file來進行管理xxx.cpp.in檔案編譯。
相關推薦
c/c++中將git當前版本資訊編譯到可執行檔案中
使用簡單Makefile,則可直接新增巨集定義: CPPFLAGS+=-DGIT_SHA1="$(shell git log --format='[sha1]:%h [author]:%cn [time]:%ci [commit]:%s [branch]:%d' -1)"
VC++6.0 MFC獲取當前工作路徑和可執行檔案路徑
1. 獲取Debug或Release所在的路徑 CString GetModuleDir() { HMODULE module = GetModuleHandle(0); char pFileName[MAX_PATH]; GetModuleFileName(mod
用makefile編譯生成.a檔案(linux靜態庫),並編譯進可執行檔案中
檔案列表: 程式碼檔案 /* 下列程式碼儲存到 plus.cpp */ int my_plus(int x,int y) { return x + y; }
Windows VC++ 調整程序當前目錄為程式可執行檔案所在目錄
調整程序當前目錄為程式可執行檔案所在目錄是個非常實用的方法。為了更加的讓程式碼複用,本文將調整程序當前目錄為程式可執行檔案所在目錄這一功能封裝為三個實用函式——1.SplitPathFileName這個函式將檔案全名(帶路徑)分解成路徑名,檔名,字尾名。2.GetPr
Linux中將c檔案編譯成可執行檔案的方法
c檔案:project.c 方法一 //預編譯,生成已編譯通過的C原始程式 *.i gcc -E project.c -o project.i //編譯,生成組合語言原始程式 *.s gcc -S project.i -o project.s //連結,生成可執行程
VS中c++檔案呼叫c 函式 ,fatal error C1853 預編譯標頭檔案來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)
出現錯誤:error C1853: “Debug\ConsoleApplication1.pch”預編譯標頭檔案來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反) 相關資料:
c#獲取系統語言及版本資訊
//C#判斷作業系統是否為Windows98 public static bool IsWindows98 { get { return (Environment.OSVersion.Platform == PlatformID.Win32Windows) &&
c語言學生成績管理系統(可以將學生資訊儲存至txt檔案中)
程式截圖: 標頭檔案說明; 定義全域性變數; 定義、編寫輸入函式; 定義、編寫顯示函式; 定義、編寫修改函式; 定義、編寫查詢函式; 定義、編寫新增函式; 定義、編寫排序函式; 定義、編寫刪除函式; 定義、編
linux C語言編譯後執行檔案從命令輸入引數
linux使用gcc編譯C檔案後,會生成一個執行檔案,而我們執行這個檔案的時候想要使用輸入的引數怎麼辦呢,其實很簡單,我們在main函式中加入形參即可,如下圖 int main(int argc,cha
Python:用Python程式呼叫C/C++編譯的可執行檔案
[TODO] 用python程式呼叫C/C++編譯的可執行檔案 ************************華麗的分割線************************ step1:cppexec.cpp #include <iostream> int ad
Linux C 源程式 編譯連線生成 可執行檔案
源程式 test.c第一種 ,編譯 gcc -c test.c -o test.o 連線 gcc -o test test.o第二種。 編譯連線 gcc -o test test.c執行 ./
c編寫,交叉編譯成android下二進位制可執行檔案
題目: 請編寫一個netbd.c,實現 檢查android手機/system/app/cmd.apk檔案是否存在。 然後交叉編譯這個檔案,生成android下二進位制可執行檔案. 答: ====== 題目: 答: 待實現.誰會? ====== 題目: 請編寫 linu
一個C原始檔到可執行檔案 [反彙編-函式棧幀 編譯 連結]
[3] Program Headers Program Headers用來描述Segment的資訊。Segment由多個Section組成。一般是將具有共同屬性如.data和.bss匯聚為一個Segement加入到記憶體。個人理解目標檔案以Section的形式存在,可執行檔案以Segement的形式存在以方
C/C++程式從編譯到最終生成可執行檔案的過程分析
*******************************************************篇一*******************************************************************************************
VS2010靜態編譯生成.exe可執行檔案,使c++程式脫離VS環境執行
VS2010靜態編譯生成的.exe可執行檔案,可以免安裝在其他電腦直接執行 靜態編譯:就是在編譯可執行檔案的時候,將可執行檔案需要呼叫的對應動態連結庫(.so)中的部分提取出來,連結到可執行檔案
Common lisp編譯成C可執行檔案
1.安裝ecl #brew install ecl 2.配置ecl 在~/.emacs加入: (setq inferior-lisp-program "ecl") (setq slime
C程式碼變成可執行檔案的過程
C程式碼是如何變成程式的 C語言是一門典型的編譯語言,原始碼檔案需要編譯成目的碼檔案才能執行。可以認為程式檔案就是編譯好的目的碼檔案。以GCC的編譯過程為例。GCC的翻譯過程可以分成四個階段:前處理器、編譯器、彙編器、連結器,執行這四個階段的程式一起構成了一個編譯系統。 前
軟體素材---linux C語言:linux下獲取可執行檔案的絕對路徑--getcwd函式
//標頭檔案:#include <unistd.h> //定義函式:char * getcwd(char * buf, size_t size);  
【C語言】概述從原始碼到可執行檔案
自第一次輸出“hello world” 「原始碼如何變成可執行檔案」的問題就一直伴隨著我 本次以《程式設計師的自我修養—連結、裝載與庫》為參考,對這一過程做簡單總結 簡介 高階語言的出現使得程式設計師可以 儘量少考慮計算機本身的限制(如字長、記憶體大小、通訊方式
c++ 動態建立的二維陣列儲存到csv檔案中
void PreProcessFunction::saveTwoDimentionArr2csv(signed short **arr, int row, int col, char*filename) { ofstream outFile; outFile.open(f