2016-09-26 6 views
0

ウィンドウの場合、GetFileVersionInfoVerQueryValueに精通しています。私はプラットフォームに依存しないソリューションを探しています。私はブーストを使用していますので、どちらのプラットフォームでも使用できるようにしてください。 私は窓に焦点を当てた同様のquestionを読んだ。アプリケーション内からウィンドウと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

関連する問題