Windows 10 Creators Update(バージョン10.0.15063)をインストールしました。
Visual Studioの複数のバージョンがインストールされています(2012、2013、2015、2017)。私はほんの数週間前にVS 2017をインストールしました。
CMake(バージョン3.8.1)は、「VS2015 x64 Native Command Prompt」内で実行されたときにC/C++コンパイラを検出しなくなりました(itdoesは、 VS 2017コマンドプロンプト内で実行します)。
CMakeLists.txt
のコンテンツ:
project (test)
add_executable (test test.cpp)
(test.cpp
の内容は無関係です。)
VS2015 x64ネイティブコマンドプロンプトでの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
(リソースコンパイラ)が見つかりません。実際、同じVS 2015コマンドプロンプトで:
> where rc.exe
INFO: Could not find files for the given pattern(s).
VS 2013コマンドプロンプトで見つかったis
> 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
さまざまなVSコマンドプロンプトでPATH
環境変数の内容を確認します。
VS 2013コマンドプロンプト内には、PATH
が含まれています
C:\Program Files (x86)\Windows Kits\8.1\bin\x64
VS 2017コマンドプロンプト内には、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 Update 3セットアップを再実行し、追加するように指示しました
WindowsおよびWeb開発->ユニバーサルWindowsアプリ開発ツール->ツール(1.4.1)およびWindows 10 SDK(10.0.14393)
これによりrc.exeおよび関連ファイルが表示されました
C:\Program Files (x86)\Windows Kits\10\bin\x64
実行中rc -v on
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である必要がありますが、以前のインストールではセットアップされませんでした。
それは間違いなくあなただけではありません。昨日VS2017をインストールしましたが、そうすることで同じ問題が発生したようです。良い解決策はありませんが(これはバグとしてマイクロソフトに報告する必要があります)、ハッキーな回避策があります。
Rc.exeとrc.dllをコピーできました
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64
to
C:\Program Files (x86)\Windows Kits\10\bin\x86
これで問題は解決しました。私の考えでは、レジストリキーは上書きされますが、確実に掘り下げることができません。
Windows 10 15063.608(Windows SDK 10.0.15063.0)でも同じ問題が発生しました。私のために働いている解決策は、以下に示すようなWindows 10キットのバイナリx64およびx86フォルダ用のハードリンク作成です(管理者権限でプロンプトを使用):
mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x86" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86"
mklink /J "C:\Program Files (x86)\Windows Kits\10\bin\x64" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64"
(これらのコマンドを実行する前に、既存のWindows Kits\10\bin\x64
フォルダーとWindows Kits\10\bin\x86
フォルダーの名前を変更するだけです-使用されていないようです。
何らかの理由で、組み込みのTools(1.4.1)およびWindows 10 SDK(10.0.14393)インストーラーが機能しませんでした:
C:\Program Files (x86)\Windows Kits\10\bin\x86
がインストール中に読み込まれました(成功!)-2147023293
/0x80048646
を返しました。"Windows 10 SDK(ver。10.0.14393.795)"インストーラー から Windows SDKおよびエミュレーターアーカイブ は動作しました:C:\Program Files (x86)\Windows Kits\10\bin\x86
は、rc.exe
を含む、取得されたままになります。
Windows 7 x64、Visual Studio Professional 2015 Update 3。
これにこだわる人にとって、特定の問題セットは次のとおりです。
上記を行うと、
windows/VSインストーラーのスイート全体にバグやその他の動作があるようです。
基本的に、MSFTが修正しなければならない4つの問題があります。(a)rc.exeをインストールしない場合があります。(b)c ++のものを要求するだけの場合、rc.exeをインストールしません。すべての場合(c)アンインストールパイプラインは、さまざまな方法ですべて台無しになっているようです(d)rc.exeをランダムにインストールしても、パスを忘れたり、汚したりします。
:/
長い退屈な話を短くすると、ソリューションには1つ以上が含まれているようです
。 。 。 。 。 。
[*] VS 2017に付属している可能性があります。VS2017が他の何か、Unityなどで迷惑なようにインストールされることを忘れないでください。
VS2015コマンドプロンプトを実行します。
> where rc
> C:\Program Files (x86)\Windows Kits\10\bin\x64\rc.exe
> C:\Program Files (x86)\Windows Kits\10\bin\x86\rc.exe
Vs2017デフォルトでは最新のSDKがインストールされ、古いバージョンが上書きされるようです。
Windows Sdkバージョン10.0.16299.0を使用したVS2017 Community 15.4.5でも同様の問題が発生しますが、TeamCityを介したビルドのみです。 VS内からのビルドは正常に機能するため、VS開発者コマンドプロンプトから起動するときはMSBuildでビルドします。したがって、これはOPの質問に正確に答えるわけではありませんが、非常に類似しており、これは最初の検索一致の1つなので、ここに追加します。
notのインストールを修正する必要がある(リンク/コピーなしでエラーが発生しにくく、自動化が容易)ソリューションを見つけました:
VisualStudioVersion
環境変数を15.0
に設定します。
あなたはそのために標準的なWindows GUIを使用してこれをグローバルに行うことができます(Windows 10 here の例)が、VSの他のバージョンと干渉する可能性があるため、それに対しては強くお勧めします変更はビルドコードに簡単に自動化またはチェックインされるため、さまざまなマシンで再現するのが難しくなります。より良い代替方法は、ビルドを実行するコマンドラインでこれを設定することです(cmd:set VisualStudioVersion=15.0
PS:TeamCityの$env:VisualStudioVersion = '15.0'
:env.VisualStudioVersion
パラメーターを追加します)。別の方法は、このディレクトリをプロパティとしてMSBuildに渡すことです(/p:VisualStudioVersion=15.0
を渡すか、teamCityでsystem.VisualStudioVersion
を追加します)。
CMAKE_SYSTEM_VERSION=8.1
を指定すると、問題が解決しました。
管理者モードのテキストエディターで「C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat」を開き、行を変更します
@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin\x86;%PATH%
に
@if not "%WindowsSdkDir%" == "" @set PATH=%WindowsSdkDir%bin\x86;%WindowsSdkDir%bin\%WindowsSDKVersion%x86;%PATH%
私はまったく同じ問題を抱えていました。 2015および2017を含む複数のVisual Studioバージョン。私のソリューションは、2017開発者コマンドプロンプトからcmakeコマンドを実行し、2015 Visual Studioバージョンを次のように指定することでした。
cmake -G "Visual Studio 14 2015" ..
ネイティブ64/86 Visual Studioコマンドで次のコマンドを実行して、vs2015の正しいバージョンを設定するプロンプトを表示します-%comspec%/ k "C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC\vcvarsall.bat" AMD64 8.1%comspec %/ k "C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1
ネイティブ64/86 Visual Studioコマンドプロンプトで次のコマンドを実行して、vs2013の正しいバージョンを設定します-%comspec%/ k "C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\VC\vcvarsall.bat" AMD64 7.1%comspec%/ k "C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 7.1
これにより、正しいパスが設定され、問題なく実行されます。 VS2013、VS2015、VS2017がインストールされたWIN10でこれをテストしました。