何か非常に明白なことを見逃しているに違いありませんが、何らかの理由で、Microsoft C++ コンパイラ (cl.exe) のコマンドライン バージョンは、実行時にそのバージョンのみの報告をサポートしていないようです。これは、ツールのユーザーがインストールしたコンパイラ バージョンを確認する makefile を作成するために必要です (ユーザーは、ローカルでコンパイルするコードを含む makefile を取得するため、コンパイラ バージョンを制御できません)。
gcc では、-v または --version オプションを指定するだけで、適切なバージョン文字列が印刷されます。
cl.exe では、-v でエラーが発生します。
MSDN ドキュメントとコンパイラのオンライン ヘルプを読みましたが、コンパイラのバージョンだけを印刷するスイッチが見つかりません。 困ったことに、コンパイラを起動すると常にバージョンが表示されますが、バージョンを取得するためだけにコンパイラを起動することはできないようです。
qmake を使用してコンパイラのベンダー / バージョンを検索する似ているように見えますが、gcc の単純なケースのみを扱います。
VC++ Express 2005 でこれを試しています。コンパイラ バージョンの検出は、コンパイラ バージョンに依存しない方法で行うのが最善なので、問題ないことを願っています :)
返信後の更新:
- 引数なしで cl.exe を実行すると、バージョンとヘルプ テキストが出力されます。
- これは、vc バージョン間でバージョンを取得するための最も移植性の高い方法のようです。
- 次に複数行の出力を解析する必要がありますが、これはそれほど難しくありません。
- 最終的にこれを実行し、うまくいきました。
ベストアンサー1
バージョンを報告するために、何も入力せずに cl.exe を実行することはできないのですか?
VS 2008、2005、.NET 2003 のコマンド プロンプトで cl.exe を実行してテストしたところ、すべてバージョンが報告されました。
2008 年の場合:
d:\Program Files\Microsoft Visual Studio 9.0\VC>cl
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 15.00.30729.01 (80x86 用)
2005、SP 1 (Safe Standard C++ クラスを追加):
C:\Program Files\Microsoft Visual Studio 8\VC>cl
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 14.00.50727.762 (80x86 用)
2005年の場合:
C:\Program Files\Microsoft Visual Studio 8\VC>cl
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 14.00.50727.42 (80x86 用)
.NET 2003 の場合:
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 13.10.6030 (80x86 用)
編集
2010 年は次のようなものになります。
Microsoft (R) 32 ビット C/C++ 最適化コンパイラ バージョン 16.XX.YYYYY.ZZ (80x86 用)
またはターゲットプラットフォームに応じて
Microsoft (R) C/C++ 最適化コンパイラ バージョン 16.XX.YYYYY.ZZ (x64 用)
2012年:
Microsoft (R) C/C++ 最適化コンパイラ バージョン 17.XX.YYYYY.ZZ ($$$ 用)
ここで、$$$ は対象となるプラットフォーム (例: x86、x64、ARM) であり、XX、YYYYY、ZZ はマイナー バージョン番号です。
2013年:
Microsoft (R) C/C++ 最適化コンパイラ バージョン 18.XX.YYYYY.ZZ ($$$ 用)
ここで、$$$ は対象となるプラットフォーム (例: x86、x64、ARM) であり、XX、YYYYY、ZZ はマイナー バージョン番号です。
2015年:
Microsoft (R) C/C++ 最適化コンパイラ バージョン 19.XX.YYYYY ($$$ 用)
ここで、$$$ は対象となるプラットフォーム (例: x86、x64、ARM) であり、XX と YYYYY はマイナー バージョン番号です。