2009-07-16 4 views
0

標準的な方法を知りたい。マルチプラットフォームプログラム* nixとwin32にバージョン情報を入れる方法は?

現在、私はヘッダファイルとinlcudieに一連の定義を追加して、メインリソースファイルwin32をwin32で更新し、* nixでこのリソースを返すいくつかのグローバル関数を作成すると考えています。

Windowsでは、msiインストールファイルも同じバージョンを反映します。

答えて

0

これは妥当な方法です。私はこれを行う標準的な方法はないと思います。クロスプラットフォームであるバージョンレポートのための実際の標準はありません。

0

ビルドのたびに "version.cpp"またはそれに相当するものを変更するオーバーヘッドを避けたいので、少なくとも1つのコンパイルとリンクを行う時間がかかるため、ビルド後にバイナリを変更します。

たとえば、 ELFまたはPE形式の実行可能ファイルを使用する場合は、ELFまたはPEの基本的な知識とリンカマップを使用して置き換えるものを調べることができます。そうしないと、バイナリをスキャンして設定パターンを探します(静的const char VERSION [ = "[VERSIONBLOCK xxxxxxxxxxxxx]";)と、関連情報と上記(例えばXXXX部分)部分を置き換えます。例えばの

  • ビルド日時
  • ビルドマシン
  • ユーザ名
  • 出力あなたのバイナリが署名またはこのステップの前に圧縮されている場合、これは非常にうまく機能しませんが、署名/圧縮は、このステップの後に起こるので、通常、あなたのビルドプロセスを設計できることをつけません

注意。

これの変形は、Win32 PEのバージョンメタデータと埋め込みバージョンの文字列にヒットするように拡張することができます。

関連する問題