2016-09-26 52 views
0

對於windows,我熟悉GetFileVersionInfoVerQueryValue。我正在尋找一個獨立於平臺的解決方案。我正在使用boost,所以最好在boost中提供一些可用於這兩個平臺的東西。 我讀過一個類似於question,這是關注窗口。如何從應用程序中找到適用於Windows和Linux的應用程序版本

+1

你想獲得正在運行的可執行文件的_own_版本或其他可執行文件的版本嗎?因爲如果你需要自己的版本,你可以爲它添加一個'#define'。 – Thomas

+0

@Thomas是的,我需要正在運行的可執行文件的版本。你可以強調什麼會進入#define? –

+0

你在問錯誤的問題。 **您**決定使用的版本信息,並在編譯時進行設置。沒有理由忘記這些信息,只是試圖在運行時再次恢復它。只要使用編譯時常量,無論您何時調用假設的檢索函數。 – IInspectable

回答

4

由於您試圖獲取可執行文件的版本,爲什麼不直接添加#define?例如:

version.h

// include guards etc. 
#define MY_PROGRAM_VERSION "1.2.3" 

要從CMakeLists.txt拉版本,而不是硬編碼,試試這個:

version.h.template

// include guards etc. 
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}" 

CMakeLists.txt

cmake_minimum_required(VERSION 3.0) # Use higher if you need, lower won't work. 

project(test VERSION 1.2.3) # The one and only place where you define your version! 

configure_file(version.h.template version.h) 

我假設你有類似的東西project(...)線已,配置版本。其中,它設置一個名爲PROJECT_VERSION的CMake變量。

configure_file調用需要模板,填充CMake知道的變量,並將輸出寫入version.h,通常您可以將該輸出寫入#include。當版本或模板更改時,CMake將重新生成該文件。

+1

因此,版本號在項目的CMAKE中設置。如何在運行期間從那裏提取它? –

+0

優秀的問題,我會編輯... – Thomas

相關問題