Windows では、次のことができます。
CSystemInfo info;
this->m_strVersion = info.GetFileVersion( CFileSystemHelper::GetApplicationPath() + _T("/test.exe") );
バージョン番号を取得します。
Linux の C++ ではどうすればよいですか?
Windows は、標準の API サポートを備えたバージョン リソース システムを採用しています。Linux と UNIX には、レガシーから冗長性までさまざまな理由から、このような高レベルの概念がありません。
最適なオプションは、ローカル パッケージ システム (RPM、APT など) にクエリを実行するか、推奨される GNU 標準--version
であるコマンド ライン パラメーターを使用して実行することです。
Samba ツールのコマンド ラインでの RPM クエリの例smbget
:
# rpm -q -f /usr/bin/smbget --queryformat '%{version}\n' 3.0.33
現在実行中の実行可能ファイルのパスを取得することをお勧めします。
Linuxでは、/proc/
疑似ファイルシステムを使用できます。詳細については、proc(5)のマニュアルページをお読みください。
具体的には、おそらく次のようなことをしたいと思うでしょう
char myexepath[512];
memset (myexepath, 0, sizeof(myexepath);
readlink ("/proc/self/exe", myexepath, sizeof(myexepath));
(ただし、上記のランタイムエラーを実際に確認する必要があります)
プログラムのバージョンを表示したいだけの場合は、それに関する規則が必要です。通常--version
、プログラムの最初の引数として受け入れます。
AdvancedLinuxProgrammingをお読みください。