1

В каталоге, C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC, Ther два .bat файлы:В чем разница между vcvarsall.bat и bin/vcvars32.bat?

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

Запуск каждый из них дает такое же сообщение:

Настройка среды для использования Microsoft Инструменты Visual Studio 2010 x86.

Какова цель каждого, и когда я буду использовать каждый из них?

Ниже содержимое каждого файла летучей мыши:
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 

бен/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 
+0

Как код в двух сценариях отличаются? – SomethingDark

+0

@SomethingDark добавленный файл содержание. –

+0

Первый определяет, какой командный файл использовать и вызывает другой. – Squashman

ответ

2

Вы бы использовать vcvarsall.bat, как он определяет, на основе значения параметра, которое вы передаете, в каком vcvars * .bat-файле для вызова.

Отрывок из vcvarsall.bat:

:x86 
if not exist "%~dp0bin\vcvars32.bat" goto missing 
call "%~dp0bin\vcvars32.bat" 
goto :eof 
Смежные вопросы