レジストリのエントリが不完全らしく、vcvars64.bat を実行しても上手く環境変数が設定出来なかった。
不足していたエントリは以下。ただし、FrameworkVer64 は正しいかどうか怪しい。
不足していたエントリは以下。ただし、FrameworkVer64 は正しいかどうか怪しい。
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\SxS] [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\SxS\VC7] "15.0"="C:\\Program Files (x86)\\Microsoft Visual Studio\\VS15Preview\\Common7\\IDE\\VC\\" "FrameworkDir64"="C:\\Windows\\Microsoft.NET\\Framework64" "FrameworkVer64"="v4.0.30319" [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\SxS\VS7] "15.0"="C:\\Program Files (x86)\\Microsoft Visual Studio\\VS15Preview\\"
なぜか以下のようにすると、いろいろエラーが出て失敗する。
C:\Microsoft.Cpp.Default.props がないとか、VCTargetsPath とか VCToolsInstallDir がレジストリから取れなかったとか、tracker.exe がないとか言われて失敗している。
まず、Microsoft.Cpp.Default.props は "C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Default.props" にある。VCTargetsPath に "C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets" を与えておけばとりあえず .props は拾ってくれたようなのだが、grep してみたところ Microsoft.Cpp.Common.props で VCTargetsPath を元に自動設定されてるっぽい VCToolsInstallDir が上手く設定されない。Microsoft.Cpp.Common.props のロジックから当りを付けてみたところ VCToolsInstallDir_150 に C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\ を入れると解決した。
と言うことで、以下の環境変数を設定した。
因みに、以下の 8.1 用の SDK だと、"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools" になってしまうので駄目だったので念のため記しておく。
更に
2016-08-23: 追記
結構端折って書いてたので、ちょっと補足
初期状態としては、
Windows 8 SDK、Windows 8.1 SDK はインストールしたが、
Windows 10 SDK はエラーでインストール出来ない点は昨日のままである。
昨日との違いとしては、
VisualStudio 2013 Community をインストールしている。
vcvarsall.bat は VisualStudio 15 preview 2 の物を呼び、第一引数に amd64 を与えている。
まず、以下のようにすると、なぜかいろいろエラーが出て失敗する。
見ての通り "C:\Microsoft.Cpp.Default.props" が見つからないのが原因。
".\CMakeFiles\3.6.1\CompilerIdC\CompilerIdC.vcxproj" を見ると、19行目辺りに以下のような記述がある。
しかし、再度 cmake かけると、コマンドプロンプト上の表示は前と同じエラー。エラーログの内容が以下のように変化している。
今度は VCToolsInstallDir がレジストリから拾えなかったと言っている模様。
%VCTargetsPath% 以下を grep してみたところ %VCTargetsPath%\Microsoft.Cpp.Common.props の54〜110行に以下のような記述を発見。
ここまでの作業は、昨日と同じなのだが、なぜか、昨日問題になった tracker.exe については何も言われず、ここで、ソリューションファイルが生成出来てしまった。
と言うことで、まとめると、以下の環境変数を設定した。
cmake.exe -G "Visual Studio 14 2015 Win64" ../CMakeFiles/CMakeError.log を見ると
C:\Microsoft.Cpp.Default.props がないとか、VCTargetsPath とか VCToolsInstallDir がレジストリから取れなかったとか、tracker.exe がないとか言われて失敗している。
まず、Microsoft.Cpp.Default.props は "C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Default.props" にある。VCTargetsPath に "C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets" を与えておけばとりあえず .props は拾ってくれたようなのだが、grep してみたところ Microsoft.Cpp.Common.props で VCTargetsPath を元に自動設定されてるっぽい VCToolsInstallDir が上手く設定されない。Microsoft.Cpp.Common.props のロジックから当りを付けてみたところ VCToolsInstallDir_150 に C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\ を入れると解決した。
と言うことで、以下の環境変数を設定した。
set VCTargetsPath=C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets set VCToolsInstallDir_150=C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\tracker.exe については "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\" にあるのに、./Microsoft.Cpp.Redirect.11.targets での指定が、'$(WindowsSdkDir_80A)bin\NETFX 4.0 Tools\Tracker.exe' とかなっているため、以下の Windows SDK をインストールしないと駄目だった。
因みに、以下の 8.1 用の SDK だと、"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools" になってしまうので駄目だったので念のため記しておく。
更に
Link: C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\bin\amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdCXX.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:".\CompilerIdCXX.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdCXX.lib" /MACHINE:X64 Debug\CMakeCXXCompilerId.obj LINK : fatal error LNK1104: cannot open file 'ucrtd.lib' [C:\Users\kou\Desktop\cuda\CostFilterCUDA\CMakeFiles\3.6.1\CompilerIdCXX\CompilerIdCXX.vcxproj] プロジェクト "C:\Users\kou\Desktop\cuda\CostFilterCUDA\CMakeFiles\3.6.1\CompilerIdCXX\CompilerIdCXX.vcxproj" (既定のターゲット) のビルドが終了しました -- 失敗。なんてエラーも出てるんだけど、これは、vcvars64.bat で
@if not "%UCRTVersion%" == "" @set LIB=%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64;%LIB%とか設定されていて
UCRTVersion=10.0.10240.0 UniversalCRTSdkDir=C:\Program Files (x86)\Windows Kits\10\と言う状態なので、多分以下の SDK のはずなんだけど、なぜかインストールに失敗した。
2016-08-23: 追記
結構端折って書いてたので、ちょっと補足
初期状態としては、
Windows 8 SDK、Windows 8.1 SDK はインストールしたが、
Windows 10 SDK はエラーでインストール出来ない点は昨日のままである。
昨日との違いとしては、
VisualStudio 2013 Community をインストールしている。
vcvarsall.bat は VisualStudio 15 preview 2 の物を呼び、第一引数に amd64 を与えている。
vcvarsall amd64
まず、以下のようにすると、なぜかいろいろエラーが出て失敗する。
C:\Users\kou\Desktop\cuda\CostFilterCUDA>cmake -G "Visual Studio 14 2015 Win64" . -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error in CMakeLists.txt: No CMAKE_C_COMPILER could be found. CMake Error in CMakeLists.txt: No CMAKE_CXX_COMPILER could be found. -- Configuring incomplete, errors occurred! See also "C:/Users/kou/Desktop/cuda/CostFilterCUDA/CMakeFiles/CMakeOutput.log". See also "C:/Users/kou/Desktop/cuda/CostFilterCUDA/CMakeFiles/CMakeError.log".一見 CMAKE_*_COMPILER が見つからないように見えるが、実際には試験コンパイルに失敗しているだけのようだ。
見ての通り "C:\Microsoft.Cpp.Default.props" が見つからないのが原因。
".\CMakeFiles\3.6.1\CompilerIdC\CompilerIdC.vcxproj" を見ると、19行目辺りに以下のような記述がある。
... <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> ...Microsoft.Cpp.Default.props は "C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Default.props" にある。VCTargetsPath に "%VCINSTALLDIR%VCTargets" を与えておけばとりあえず .props は拾ってくれたようになった。
しかし、再度 cmake かけると、コマンドプロンプト上の表示は前と同じエラー。エラーログの内容が以下のように変化している。
今度は VCToolsInstallDir がレジストリから拾えなかったと言っている模様。
%VCTargetsPath% 以下を grep してみたところ %VCTargetsPath%\Microsoft.Cpp.Common.props の54〜110行に以下のような記述を発見。
... <VCToolsInstallDir_150 Condition="'$(VCToolsInstallDir_150)' == ''">$(VCTargetsPath)\..\</VCToolsInstallDir_150> <中略> <VCToolsInstallDir>$(VCToolsInstallDir_150)</VCToolsInstallDir> ...これを見ると、VCTargetsPath から自動的に VCToolsInstallDir_150 を設定して、VCToolsInstallDir を設定してくれるように思えるのだが、なぜか上手く行っていない模様。とりあえず、VCToolsInstallDir_150 に "%VCTargetsPath%\..\" を与えた。
ここまでの作業は、昨日と同じなのだが、なぜか、昨日問題になった tracker.exe については何も言われず、ここで、ソリューションファイルが生成出来てしまった。
と言うことで、まとめると、以下の環境変数を設定した。
set VCTargetsPath=%VCINSTALLDIR%VCTargets set VCToolsInstallDir_150=%VCTargetsPath%\..\
タグ
コメントをかく