2009-07-16 44 views
0

我想知道做這件事的標準方式是什麼。如何將版本信息放入多平臺程序* nix和win32中?

當前我想在一個頭文件中添加一系列定義,並在主資源文件winlc中包含該文件win32以更新win32中的版本資源並在* nix中使某些全局函數返回此信息。

並在windows中使msi安裝文件也反映相同的版本。

回答

0

這聽起來像一個合理的方式來做到這一點。我不認爲有這樣做的標準方式;對於跨平臺的版本報告沒有任何真正的標準。

0

由於我們希望避免每次打構建時更改「version.cpp」或等價物的開銷 - 從而花時間做至少一個編譯和鏈接 - 我們在構建之後修改二進制文件。

如果您要輸出到例如ELF或PE格式的可執行文件,您可以使用ELF或PE的一些基本知識以及鏈接器映射來確定要替換的內容,否則可以掃描二進制文件查找設置模式(我們使用類似於static const char VERSION [] = 「[VERSIONBLOCK XXXXXXXXXXXXX]」)和替換的部分(例如,上述XXXX部分)與相關信息:

  • 生成日期和時間
  • 構建機
  • 用戶名
  • 例如輸出svnversion,如果

需要注意的是,如果你的二進制文件或簽署此步驟之前壓縮,這將不能很好地工作,但通常這樣的簽名/壓縮此步驟後,會發生您可以設計構建過程。

我敢肯定,它的一個變體可以擴展到Win32 PE版本元數據以及任何嵌入的版本字符串。