C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC 目录中,有两个 .bat 文件:

  • ./vcvarsall.bat
  • bin/vcvars32.bat

  • 运行每一个都会给出相同的消息:



    每个的目的是什么,我什么时候选择使用每个?

    下面是每个bat文件的内容:
    vcvarsall.bat:
    @echo off
    if "%1" == "" goto x86
    if not "%2" == "" goto usage
    
    if /i %1 == x86       goto x86
    if /i %1 == amd64     goto amd64
    if /i %1 == x64       goto amd64
    if /i %1 == ia64      goto ia64
    if /i %1 == x86_amd64 goto x86_amd64
    if /i %1 == x86_ia64  goto x86_ia64
    goto usage
    
    :x86
    if not exist "%~dp0bin\vcvars32.bat" goto missing
    call "%~dp0bin\vcvars32.bat"
    goto :eof
    
    :amd64
    if not exist "%~dp0bin\amd64\vcvars64.bat" goto missing
    call "%~dp0bin\amd64\vcvars64.bat"
    goto :eof
    
    :ia64
    if not exist "%~dp0bin\ia64\vcvars64.bat" goto missing
    call "%~dp0bin\ia64\vcvars64.bat"
    goto :eof
    
    :x86_amd64
    if not exist "%~dp0bin\x86_amd64\vcvarsx86_amd64.bat" goto missing
    call "%~dp0bin\x86_amd64\vcvarsx86_amd64.bat"
    goto :eof
    
    :x86_ia64
    if not exist "%~dp0bin\x86_ia64\vcvarsx86_ia64.bat" goto missing
    call "%~dp0bin\x86_ia64\vcvarsx86_ia64.bat"
    goto :eof
    
    :usage
    echo Error in script usage. The correct usage is:
    echo     %0 [option]
    echo where [option] is: x86 ^| ia64 ^| amd64 ^| x86_amd64 ^| x86_ia64
    echo:
    echo For example:
    echo     %0 x86_ia64
    goto :eof
    
    :missing
    echo The specified configuration type is missing.  The tools for the
    echo configuration might not be installed.
    goto :eof
    

    bin/vcvars32.bat:
    @echo Setting environment for using Microsoft Visual Studio 2010 x86 tools.
    
    @call :GetVSCommonToolsDir
    @if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
    
    @call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
    
    @if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
    @if "%FrameworkDir32%"=="" goto error_no_FrameworkDIR32
    @if "%FrameworkVersion32%"=="" goto error_no_FrameworkVer32
    @if "%Framework35Version%"=="" goto error_no_Framework35Version
    
    @set FrameworkDir=%FrameworkDir32%
    @set FrameworkVersion=%FrameworkVersion32%
    
    @if not "%WindowsSdkDir%" == "" (
        @set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools;%WindowsSdkDir%bin;%PATH%"
        @set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
        @set "LIB=%WindowsSdkDir%lib;%LIB%"
    )
    
    @rem
    @rem Root of Visual Studio IDE installed files.
    @rem
    @set DevEnvDir=%VSINSTALLDIR%Common7\IDE\
    
    @rem PATH
    @rem ----
    @if exist "%VSINSTALLDIR%Team Tools\Performance Tools" (
        @set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
    )
    @if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
    @if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
    @if exist "%VCINSTALLDIR%VCPackages" set PATH=%VCINSTALLDIR%VCPackages;%PATH%
    @set PATH=%FrameworkDir%%Framework35Version%;%PATH%
    @set PATH=%FrameworkDir%%FrameworkVersion%;%PATH%
    @set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
    @if exist "%VCINSTALLDIR%BIN" set PATH=%VCINSTALLDIR%BIN;%PATH%
    @set PATH=%DevEnvDir%;%PATH%
    
    @if exist "%VSINSTALLDIR%VSTSDB\Deploy" (
        @set "PATH=%VSINSTALLDIR%VSTSDB\Deploy;%PATH%"
    )
    
    @if not "%FSHARPINSTALLDIR%" == "" (
        @set "PATH=%FSHARPINSTALLDIR%;%PATH%"
    )
    
    @rem INCLUDE
    @rem -------
    @if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
    @if exist "%VCINSTALLDIR%INCLUDE" set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%
    
    @rem LIB
    @rem ---
    @if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIB=%VCINSTALLDIR%ATLMFC\LIB;%LIB%
    @if exist "%VCINSTALLDIR%LIB" set LIB=%VCINSTALLDIR%LIB;%LIB%
    
    @rem LIBPATH
    @rem -------
    @if exist "%VCINSTALLDIR%ATLMFC\LIB" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB;%LIBPATH%
    @if exist "%VCINSTALLDIR%LIB" set LIBPATH=%VCINSTALLDIR%LIB;%LIBPATH%
    @set LIBPATH=%FrameworkDir%%Framework35Version%;%LIBPATH%
    @set LIBPATH=%FrameworkDir%%FrameworkVersion%;%LIBPATH%
    
    @goto end
    
    @REM -----------------------------------------------------------------------
    :GetVSCommonToolsDir
    @set VS100COMNTOOLS=
    @call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
    @if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
    @if errorlevel 1 call :GetVSCommonToolsDirHelper64  HKLM > nul 2>&1
    @if errorlevel 1 call :GetVSCommonToolsDirHelper64  HKCU > nul 2>&1
    @exit /B 0
    
    :GetVSCommonToolsDirHelper32
    @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
        @if "%%i"=="10.0" (
            @SET "VS100COMNTOOLS=%%k"
        )
    )
    @if "%VS100COMNTOOLS%"=="" exit /B 1
    @SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
    @exit /B 0
    
    :GetVSCommonToolsDirHelper64
    @for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
        @if "%%i"=="10.0" (
            @SET "VS100COMNTOOLS=%%k"
        )
    )
    @if "%VS100COMNTOOLS%"=="" exit /B 1
    @SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
    @exit /B 0
    
    @REM -----------------------------------------------------------------------
    :error_no_VS100COMNTOOLSDIR
    @echo ERROR: Cannot determine the location of the VS Common Tools folder.
    @goto end
    
    :error_no_VSINSTALLDIR
    @echo ERROR: Cannot determine the location of the VS installation.
    @goto end
    
    :error_no_FrameworkDIR32
    @echo ERROR: Cannot determine the location of the .NET Framework 32bit installation.
    @goto end
    
    :error_no_FrameworkVer32
    @echo ERROR: Cannot determine the version of the .NET Framework 32bit installation.
    @goto end
    
    :error_no_Framework35Version
    @echo ERROR: Cannot determine the .NET Framework 3.5 version.
    @goto end
    
    :end
    

    最佳答案

    您将使用 vcvarsall.bat,因为它根据您传入的参数值确定要调用哪个 vcvars*.bat 文件。

    来自 vcvarsall.bat 的片段:

    :x86
    if not exist "%~dp0bin\vcvars32.bat" goto missing
    call "%~dp0bin\vcvars32.bat"
    goto :eof
    

    关于windows - vcvarsall.bat 和 bin/vcvars32.bat 有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33571138/

    10-11 22:46
    查看更多