我正在跟进本指南安装 SpiderMokey。
我已经下载并安装了 Visual Studio Community 2015,然后重新启动。
我已经下载并安装了 MozillaBuild 包。
当我去c:\mozilla-build
跑步时start-shell-msvc2015.bat
,它说
MozillaBuild Install Directory: C:\mozilla-build\
Visual C++ 2015 Directory: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\
No Windows SDK found. Exiting.
Press any key to continue . . .
我希望它能找到 Windows SDK,我假设我刚刚使用 VS 2015 下载了它,但是没有。
它在寻找什么以及我如何才能得到它?
编辑2:
安装 Windows SDK 8.1 并重试后,出现此错误:
Unable to call a suitable vcvars script. Exiting.
以下是整个安装脚本:
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
REM Reset some env vars and set some others.
SET CYGWIN=
SET INCLUDE=
SET LIB=
IF NOT DEFINED MOZ_NO_RESET_PATH (
SET PATH=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem
)
REM mintty is available as an alternate terminal, but is not enabled by default due
REM to various usability regressions. Set USE_MINTTY to 1 to enable it.
IF NOT DEFINED USE_MINTTY (
SET USE_MINTTY=
)
SET ERROR=
SET MOZILLABUILD=%~dp0
SET TOOLCHAIN=
REM Figure out if we're on a 32-bit or 64-bit host OS.
REM NOTE: Use IF ERRORLEVEL X to check if the last ERRORLEVEL was GEQ(greater or equal than) X.
SET WINCURVERKEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
REG QUERY "%WINCURVERKEY%" /v "ProgramFilesDir (x86)" >nul 2>nul
IF NOT ERRORLEVEL 1 (
SET WIN64=1
) ELSE (
REM Bail early if the x64 MSVC start script is invoked on a 32-bit host OS.
REM Note: We explicitly aren't supporting x86->x64 cross-compiles.
IF "%MOZ_MSVCBITS%" == "64" (
SET ERROR=The MSVC 64-bit toolchain is not supported on a 32-bit host OS. Exiting.
GOTO _QUIT
)
SET WIN64=0
)
REM Append moztools to PATH
IF "%WIN64%" == "1" (
SET MOZ_TOOLS=%MOZILLABUILD%moztools-x64
) ELSE (
SET MOZ_TOOLS=%MOZILLABUILD%moztools
)
SET PATH=%PATH%;%MOZ_TOOLS%\bin
REM Set up the MSVC environment if called from one of the start-shell-msvc batch files.
IF DEFINED MOZ_MSVCVERSION (
IF NOT DEFINED VCDIR (
REM Set the MSVC registry key.
IF "%WIN64%" == "1" (
SET MSVCKEY=HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%MOZ_MSVCVERSION%.0\Setup\VC
) ELSE (
SET MSVCKEY=HKLM\SOFTWARE\Microsoft\VisualStudio\%MOZ_MSVCVERSION%.0\Setup\VC
)
REM Find the MSVC installation directory and bail if none is found.
REG QUERY !MSVCKEY! /v ProductDir >nul 2>nul
IF ERRORLEVEL 1 (
SET ERROR=Microsoft Visual C++ %MOZ_MSVCYEAR% was not found. Exiting.
GOTO _QUIT
)
FOR /F "tokens=2*" %%A IN ('REG QUERY !MSVCKEY! /v ProductDir') DO SET VCDIR=%%B
)
IF NOT DEFINED SDKDIR (
REM Set the Windows SDK registry keys.
SET SDKPRODUCTKEY=HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Products
SET SDKROOTKEY=HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots
IF "%WIN64%" == "1" (
SET WIN81SDKKEY={5247E16E-BCF8-95AB-1653-B3F8FBF8B3F1}
) ELSE (
SET WIN81SDKKEY={A1CB8286-CFB3-A985-D799-721A0F2A27F3}
)
REM Windows SDK 8.1
REG QUERY "!SDKPRODUCTKEY!" /v "!WIN81SDKKEY!" >nul 2>nul
IF NOT ERRORLEVEL 1 (
FOR /F "tokens=2*" %%A IN ('REG QUERY "!SDKROOTKEY!" /v KitsRoot81') DO (
REM The Installed Products key still exists even if the SDK is uninstalled.
REM Verify that the Windows.h header exists to confirm that the SDK is installed.
IF EXIST "%%B\Include\um\Windows.h" (
SET SDKDIR=%%B
)
)
REM Bail if no Windows SDK is found.
IF NOT DEFINED SDKDIR (
SET ERROR=No Windows SDK found. Exiting.
GOTO _QUIT
)
SET SDKVER=8
SET SDKMINORVER=1
)
)
REM Prepend MSVC paths.
IF "%MOZ_MSVCBITS%" == "32" (
REM Prefer cross-compiling 32-bit builds using the 64-bit toolchain if able to do so.
IF "%WIN64%" == "1" IF EXIST "!VCDIR!\bin\amd64_x86\vcvarsamd64_x86.bat" (
CALL "!VCDIR!\bin\amd64_x86\vcvarsamd64_x86.bat"
SET TOOLCHAIN=64-bit cross-compile
)
REM LIB will be defined if vcvarsamd64_x86.bat has already run.
REM Fall back to vcvars32.bat if it hasn't.
IF NOT DEFINED LIB (
IF EXIST "!VCDIR!\bin\vcvars32.bat" (
CALL "!VCDIR!\bin\vcvars32.bat"
SET TOOLCHAIN=32-bit
)
)
) ELSE IF "%MOZ_MSVCBITS%" == "64" (
IF EXIST "!VCDIR!\bin\amd64\vcvars64.bat" (
CALL "!VCDIR!\bin\amd64\vcvars64.bat"
SET TOOLCHAIN=64-bit
)
)
REM LIB will be defined if a vcvars script has run. Bail if it isn't.
IF NOT DEFINED LIB (
SET ERROR=Unable to call a suitable vcvars script. Exiting.
GOTO _QUIT
)
)
cd "%USERPROFILE%"
IF "%USE_MINTTY%" == "1" (
START %MOZILLABUILD%msys\bin\mintty -e %MOZILLABUILD%msys\bin\console %MOZILLABUILD%msys\bin\bash --login
) ELSE (
%MOZILLABUILD%msys\bin\bash --login -i
)
EXIT /B
:_QUIT
ECHO MozillaBuild Install Directory: %MOZILLABUILD%
IF DEFINED VCDIR (ECHO Visual C++ %MOZ_MSVCYEAR% Directory: !VCDIR!)
IF DEFINED SDKDIR (ECHO Windows SDK Directory: !SDKDIR!)
IF DEFINED TOOLCHAIN (ECHO Trying to use the MSVC %MOZ_MSVCYEAR% !TOOLCHAIN! toolchain.)
ECHO.
ECHO %ERROR%
ECHO.
PAUSE
EXIT /B
答案1
关于第二个问题,Feugy 的答案是错误的。Visual Studio Community 2015 中有一个vcvars
脚本。默认设置下 C++ 工具没有安装!请确保在安装过程中勾选它们。如果没有,您可以随时转到add or remove programs > visual studio 2015 > modify
。
答案2
也许你应该只安装 VS 2013 (12.0) Update 3 或更高版本。我遇到了同样的问题,我安装了 VS 2015,因为我有 VS 2013 Update 1,而 VS 2015 似乎没有 vcvars.bat 脚本。
奇怪的是 VS 2015 的 mozilla-build 脚本仍然需要这个......
安装 VS 2013 后,您可以直接进入其文件夹 \VC\bin,然后将 vcvars32.bat 复制到 VS 2015 文件夹 \VC\bin。它对我有用(编译 Firefox)
答案3
在我的 VS 2015(社区版)中,没有vcvars32.bat
,但是文件夹vsvars32.bat
中有一个\Common7\Tools
。
我已修补了mozilla-build\start-shell.bat
以下内容(第 107 行):
IF EXIST "!VCDIR!\bin\vcvars32.bat" (
CALL "!VCDIR!\bin\vcvars32.bat"
SET TOOLCHAIN=32-bit
)
到:
IF EXIST "!VCDIR!\..\Common7\Tools\vsvars32.bat" (
CALL "!VCDIR!\..\Common7\Tools\vsvars32.bat"
SET TOOLCHAIN=32-bit
)