VS 2015 コマンドプロンプトで rc.exe が見つからなくなった。
質問
Windows 10 Creators Update (バージョン 10.0.15063) をインストールしたところです。
私は複数のバージョンの Visual Studio をインストールしています (2012、2013、2015、2017)。VS 2017 をインストールしたのは、ほんの 2 週間前です。
問題点
CMake (バージョン 3.8.1) を "VS2015 x64 Native Command Prompt" で実行すると、C/C++ コンパイラーが検出されなくなりました (これは は は VS 2017 コマンド プロンプト内で実行されると適切に動作します)。
リプロダクション
の内容
CMakeLists.txt
:
project (test)
add_executable (test test.cpp)
(の内容
test.cpp
は関係ありません)。
VS2015 x64 Native コマンド プロンプトで、CMake を起動します。
> mkdir build
> cd build
> cmake -G "Visual Studio 14 2015 Win64" ..
CMakeの出力です。
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:1 (project):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:1 (project):
No CMAKE_CXX_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeOutput.log".
See also "D:/dev/cmaketest/build/CMakeFiles/CMakeError.log".
分析
を見ると、失敗の理由は明らかです。
CMakeFiles/CMakeError.log
:
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
CMakeCCompilerId.c
Link:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj
LINK : fatal error LNK1158: cannot run 'rc.exe' [D:\dev\cmaketest\build\CMakeFiles\3.8.1\CompilerIdC\CompilerIdC.vcxproj]
rc.exe
(Resource Compiler)が見つかりません。確かに、同じVS 2015のコマンドプロンプトで。
> where rc.exe
INFO: Could not find files for the given pattern(s).
一方 は は VS 2013 のコマンド プロンプトで見つかりました。
> where rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe
とVS 2017のコマンドプロンプトを表示します。
> where rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
の内容を確認する。
PATH
環境変数の内容を確認します。
-
VS 2013 のコマンド プロンプトの内部。
PATH
にはC:\Program Files (x86)\Windows Kits\8.1\bin\x64
-
VS2017のコマンドプロンプトの中。
PATH
が含まれています。C:\Program Files (x86)\Windows Kits\10\bin\x64 C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
-
しかし、VS 2015のコマンドプロンプト内では
PATH
だけが含まれます。C:\Program Files (x86)\Windows Kits\10\bin\x64
を含まない
rc.exe
.
質問
-
これは既知の問題ですか、それとも私のシステムに固有の問題ですか。
-
この問題を引き起こす Windows 10 Creators Update のインストール、アンインストール、またはシステム内の変更 (おそらく Windows SDK に関連する何か) は何でしょうか?
-
これを解決するためのクリーンな方法は何ですか。
編集:VS 2017のコンポーネントをインストールしました。
どのように解決するのですか?
Win10 Creators Edition と VS2010, VS2013, VS2015 および VS2017 をインストールした 3 台のマシンで、2 台のマシンで動作し、3 台目で失敗する、このことについて時間をかけて調べました。すべてのマシンに VS2015 Update 3 があり、すべて同じオプションでインストールされているはずでした。
次のバッチ ファイルを実行します。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat
を実行すると、VS2015 x64 環境に対応した正しい環境が構築されます。これには
C:\Program Files (x86)\Windows Kits\10\bin\x64
をPATHに追加します。これは rc.exe があるはずです。しかし、私の失敗したマシンでは rc.exe はここから消えていましたが、それは
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
私は戻って、これは設定の問題のように感じて、私はVS2015アップデート3のセットアップを再実行し、追加するように指示しました。
Windows と Web 開発 -> ユニバーサル Windows アプリ開発ツール -> ツール (1.4.1) および Windows 10 SDK (10.0.14393)
Windows
このため rc.exe と関連するファイルが表示されるようになり
C:\Program Files (x86)\Windows Kits\10\bin\x64
実行中 rc -v で
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
と
C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
は同じバージョン番号の 10.0.10011.16384
なぜ rc.exe が元のインストールから失われていたのかわかりませんが、インストールを再実行し、他の SDK を追加することで、私の場合は修正されました。それは次のようになります。
C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
は、デフォルトの rc.exe であるべきですが、以前のインストールで設定されていませんでした。
関連
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] WindowsでコマンドラインからCMAKEを使ってx86やx64をビルドするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] Visual Studioがrc.exeのためにビルドできない