来自Mozilla build tools下的脚本:

一 guess-msvc.bat

REM -*- Mode: fundamental; tab-width: 8; indent-tabs-mode: 1 -*-
@ECHO OFF

set CYGWIN=
if not defined MOZ_NO_RESET_PATH (
    set PATH=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem
)

REM if DISPLAY is set, rxvt attempts to load libX11.dll and fails to start
REM (see mozilla bug 376828)
SET DISPLAY=

SET INCLUDE=
SET LIB=

SET WINCURVERKEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
REG QUERY "%WINCURVERKEY%" /v "ProgramFilesDir (x86)" >nul 2>nul
if %ERRORLEVEL% EQU 0 (
  SET WIN64=1
) else (
  SET WIN64=0
)

if "%WIN64%" == "1" (
  SET MSVCROOTKEY=HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio
  SET MSVCEXPROOTKEY=HKLM\SOFTWARE\Wow6432Node\Microsoft\VCExpress
) else (
  SET MSVCROOTKEY=HKLM\SOFTWARE\Microsoft\VisualStudio
  SET MSVCEXPROOTKEY=HKLM\SOFTWARE\Microsoft\VCExpress
)

SET MSVC6KEY=%MSVCROOTKEY%\6.0\Setup\Microsoft Visual C++
SET MSVC71KEY=%MSVCROOTKEY%\7.1\Setup\VC
SET MSVC8KEY=%MSVCROOTKEY%\8.0\Setup\VC
SET MSVC8EXPRESSKEY=%MSVCEXPROOTKEY%\8.0\Setup\VC
SET MSVC9KEY=%MSVCROOTKEY%\9.0\Setup\VC
SET MSVC9EXPRESSKEY=%MSVCEXPROOTKEY%\9.0\Setup\VC

REM First see if we can find MSVC, then set the variable
REM NOTE: delims=<tab><space>
REM NOTE: run the initial REQ QUERY outside of the if() to set ERRORLEVEL correctly

REG QUERY "%MSVC6KEY%" /v ProductDir >nul 2>nul
if "%VC6DIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC6KEY%" /v ProductDir') DO SET VC6DIR=%%B
  )
)

REG QUERY "%MSVC71KEY%" /v ProductDir >nul 2>nul
if "%VC71DIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC71KEY%" /v ProductDir') DO SET VC71DIR=%%B
  )
)

REG QUERY "%MSVC8KEY%" /v ProductDir >nul 2>nul
if "%VC8DIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC8KEY%" /v ProductDir') DO SET VC8DIR=%%B
  )
)

REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir >nul 2>nul
if "%VC8EXPRESSDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir') DO SET VC8EXPRESSDIR=%%B
  )
)

REG QUERY "%MSVC9KEY%" /v ProductDir >nul 2>nul
if "%VC9DIR%"=="" (
  REM Newer SDKs (6.1, 7.0) install the VC9 compilers and set this key,
  REM but they're functionally equivalent to the VC9 Express compilers.
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC9KEY%" /v ProductDir') DO SET TEMPVC9DIR=%%B
  )
)

REM We'll double-check for a VC9 Pro install here per the comment above.
REG QUERY "%MSVCROOTKEY%\9.0\InstalledProducts\Microsoft Visual C++" >nul 2>nul
if NOT "%TEMPVC9DIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    SET "VC9DIR=%TEMPVC9DIR%"
  ) ELSE (
    SET "VC9EXPRESSDIR=%TEMPVC9DIR%"
  )
)

REG QUERY "%MSVC9EXPRESSKEY%" /v ProductDir >nul 2>nul
if "%VC9EXPRESSDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC9EXPRESSKEY%" /v ProductDir') DO SET VC9EXPRESSDIR=%%B
  )
)

REM Look for Installed SDKs:
SET SDKROOTKEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs
SET SDK2003SP1KEY=%SDKROOTKEY%\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3
SET SDK2003SP2KEY=%SDKROOTKEY%\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1
SET SDK6KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0
REM 6.0A comes with Visual C++ 2008. If you have 6.0 installed, even
REM the express edition will update you to 6.0A
SET SDK6AKEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A
SET SDK61KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.1
SET SDK7KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0

REM Just a base value to compare against
SET SDKVER=0
SET SDKMINORVER=0

REG QUERY "%SDK7KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK7KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    SET SDKVER=7
  )
)

REG QUERY "%SDK61KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK61KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    SET SDKVER=6
    SET SDKMINORVER=1
  )
)

REG QUERY "%SDK6AKEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK6AKEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    SET SDKVER=6
    REM insane, I know!
    SET SDKMINORVER=0A
  )
)

REG QUERY "%SDK6KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK6KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    SET SDKVER=6
  )
)

REM The Vista SDK (6.0 and 6.0A) ships with a VC8 Express install

if "%SDKVER%"=="6" (
  if "%VC8EXPRESSDIR%"=="" (
    SET VC8EXPRESSDIR=%SDKDIR%VC\
  )
)

REG QUERY "%SDK2003SP2KEY%" /v "Install Dir" >nul 2>nul
if "%PSDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=3* delims=     " %%A IN ('REG QUERY "%SDK2003SP2KEY%" /v "Install Dir"') DO SET PSDKDIR=%%B
    REM arbitrary, but works for me
    SET PSDKVER=5
  )
)

REG QUERY "%SDK2003SP1KEY%" /v "Install Dir" >nul 2>nul
if "%PSDKDIR%"=="" (
  IF %ERRORLEVEL% EQU 0 (
    FOR /F "tokens=3* delims=     " %%A IN ('REG QUERY "%SDK2003SP1KEY%" /v "Install Dir"') DO SET PSDKDIR=%%B
    SET PSDKVER=4
  )
)

if defined %VC6DIR% (ECHO Visual C++ 6 directory: %VC6DIR%)
if defined %VC71DIR% (ECHO Visual C++ 7.1 directory: %VC71DIR%)
if defined %VC8DIR% (ECHO Visual C++ 8 directory: %VC8DIR%)
if defined %VC8EXPRESSDIR% (ECHO Visual C++ 8 Express directory: %VC8EXPRESSDIR%)
if defined %VC9DIR% (ECHO Visual C++ 9 directory: %VC9DIR%)
if defined %VC9EXPRESSDIR% (ECHO Visual C++ 9 Express directory: %VC9EXPRESSDIR%)
if "%SDKDIR%"=="" (
    SET SDKDIR=%PSDKDIR%
    SET SDKVER=%PSDKVER%
) else (
    ECHO Windows SDK directory: %SDKDIR%
    ECHO Windows SDK version: %SDKVER%.%SDKMINORVER%
)
if not "%PSDKDIR%"=="" (
    ECHO Platform SDK directory: %PSDKDIR%
    ECHO Platform SDK version: %PSDKVER%
)

二 start-msvc9.bat

@echo off

SET MOZ_MSVCVERSION=9
SET MOZBUILDDIR=%~dp0
SET MOZILLABUILD=%MOZBUILDDIR%

echo "Mozilla tools directory: %MOZBUILDDIR%"

REM Get MSVC paths
call "%MOZBUILDDIR%guess-msvc.bat"

REM Use the "new" moztools-static
set MOZ_TOOLS=%MOZBUILDDIR%moztools

rem append moztools to PATH
SET PATH=%PATH%;%MOZ_TOOLS%\bin

if "%VC9DIR%"=="" (
    if "%VC9EXPRESSDIR%"=="" (
        ECHO "Microsoft Visual C++ version 9 (2008) was not found. Exiting."
        pause
        EXIT /B 1
    )

if "%SDKDIR%"=="" (
        ECHO "Microsoft Platform SDK was not found. Exiting."
        pause
        EXIT /B 1
    )

rem Prepend MSVC paths
    call "%VC9EXPRESSDIR%\Bin\vcvars32.bat"

rem Don't set SDK paths in this block, because blocks are early-evaluated.

rem Fix problem with VC++Express Edition
    if "%SDKVER%" GEQ "6" (
        rem SDK Ver.6.0 (Windows Vista SDK) and newer
        rem do not contain ATL header files.
        rem We need to use the Platform SDK's ATL header files.
        SET USEPSDKATL=1
    )
    rem SDK ver.6.0 does not contain OleAcc.idl
    rem We need to use the Platform SDK's OleAcc.idl
    if "%SDKVER%" == "6" (
        if "%SDKMINORVER%" == "0" (
          SET USEPSDKIDL=1
        )
    )
) else (
    rem Prepend MSVC paths
    rem If the SDK is Win2k8, we want to use it.
    rem The Win7 SDK (or newer) should automatically integrate itself into vcvars32.bat
    if "%SDKVER%" == "6" (
        if "%SDKMINORVER%" == "1" (
          SET USESDK=1
        )
    )
    if "%USESDK%" == "0" (
        ECHO Using VC 2008 built-in SDK
    )
    call "%VC9DIR%\Bin\vcvars32.bat"
)

if "%VC9DIR%"=="" (
    rem Prepend SDK paths - Don't use the SDK SetEnv.cmd because it pulls in
    rem random VC paths which we don't want.
    rem Add the atlthunk compat library to the end of our LIB
    set "PATH=%SDKDIR%\bin;%PATH%"
    set "LIB=%SDKDIR%\lib;%LIB%;%MOZBUILDDIR%atlthunk_compat"

if "%USEPSDKATL%"=="1" (
        if "%USEPSDKIDL%"=="1" (
            set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        ) else (
            set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%INCLUDE%"
        )
    ) else (
        if "%USEPSDKIDL%"=="1" (
            set "INCLUDE=%SDKDIR%\include;%SDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        ) else (
            set "INCLUDE=%SDKDIR%\include;%SDKDIR%\include\atl;%INCLUDE%"
        )
    )
)

cd "%USERPROFILE%"

"%MOZILLABUILD%\msys\bin\bash" --login -i

三 start-msvc9-x64.bat

@echo off

SET MOZ_MSVCVERSION=9
SET MOZBUILDDIR=%~dp0
SET MOZILLABUILD=%MOZBUILDDIR%

echo "Mozilla tools directory: %MOZBUILDDIR%"

REM Get MSVC paths
call "%MOZBUILDDIR%guess-msvc.bat"

REM Use the "new" moztools-static
set MOZ_TOOLS=%MOZBUILDDIR%moztools-x64

rem append moztools to PATH
SET PATH=%PATH%;%MOZ_TOOLS%\bin

if "%VC9DIR%"=="" (
    if "%VC9EXPRESSDIR%"=="" (
        ECHO "Microsoft Visual C++ version 9 (2008) was not found. Exiting."
        pause
        EXIT /B 1
    )

if "%SDKDIR%"=="" (
        ECHO "Microsoft Platform SDK was not found. Exiting."
        pause
        EXIT /B 1
    )

rem Prepend MSVC paths
    call "%VC9EXPRESSDIR%\Bin\amd64\vcvarsamd64.bat"

rem Don't set SDK paths in this block, because blocks are early-evaluated.

rem Fix problem with VC++Express Edition
    if "%SDKVER%" GEQ "6" (
        rem SDK Ver.6.0 (Windows Vista SDK) and newer
        rem do not contain ATL header files.
        rem We need to use the Platform SDK's ATL header files.
        SET USEPSDKATL=1
    )
    rem SDK ver.6.0 does not contain OleAcc.idl
    rem We need to use the Platform SDK's OleAcc.idl
    if "%SDKVER%" == "6" (
        if "%SDKMINORVER%" == "0" (
          SET USEPSDKIDL=1
        )
    )
) else (
    rem Prepend MSVC paths
    rem If the SDK is Win2k8, we want to use it.
    rem The Win7 SDK (or newer) should automatically integrate itself into vcvars32.bat
    if "%SDKVER%" == "6" (
        if "%SDKMINORVER%" == "1" (
          SET USESDK=1
        )
    )
    if "%USESDK%" == "0" (
        ECHO Using VC 2008 built-in SDK
    )
    call "%VC9DIR%\Bin\amd64\vcvarsamd64.bat"
)

if "%VC9DIR%"=="" (
    rem Prepend SDK paths - Don't use the SDK SetEnv.cmd because it pulls in
    rem random VC paths which we don't want.
    rem Add the atlthunk compat library to the end of our LIB
    set "PATH=%SDKDIR%\bin\x64;%SDKDIR%\bin;%PATH%"
    set "LIB=%SDKDIR%\lib\x64;%SDKDIR%\lib;%LIB%;%MOZBUILDDIR%atlthunk_compat"

if "%USEPSDKATL%"=="1" (
        if "%USEPSDKIDL%"=="1" (
            set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        ) else (
            set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%INCLUDE%"
        )
    ) else (
        if "%USEPSDKIDL%"=="1" (
            set "INCLUDE=%SDKDIR%\include;%SDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        ) else (
            set "INCLUDE=%SDKDIR%\include;%SDKDIR%\include\atl;%INCLUDE%"
        )
    )
)

cd "%USERPROFILE%"

"%MOZILLABUILD%\msys\bin\bash" --login -i

完!

转载于:https://www.cnblogs.com/itech/archive/2011/09/14/2176421.html

[BuildRelease]Mozilla Build Tools(自动设置VC环境)相关推荐

  1. java环境变量自动设置_自动设置Java环境变量

    @echo off SETLOCAL ENABLEDELAYEDEXPANSION for /f "tokens=2* delims= " %%i in ('reg query & ...

  2. Java初学者福音——自动设置环境变量

    刚开始编程尤其是以开始就接触Java时,往往对path和classpath不太理解.无论从理论还是实践都有些文章都能讲得很通透.但是即便如此,对于新手,依然有存在不会设置的. 不会设置这两个变量,基本 ...

  3. Windows 典藏篇-vc++运行库安装,Microsoft Visual C++ Build Tools官方工具

    以前: 想安装最全最完整最新的 vc++ 运行库,莫非用 vs2017 安装了,这是 Microsoft 官方出品的,但是安装要安装整个 vs,非常的麻烦. 如今: 终于,终于,被我找到了这款工具! ...

  4. vc build tools完美解决

    我想问问大家,大家学Python吗? 如果你学的话,你一定遇到过和我一样的问题. 没有vc. 完美解决办法: 1. 去microsoft官网下载 vc build tools,并运行 2. 如果第一个 ...

  5. Windows vc++运行库安装,Microsoft Visual C++ Build Tools官方工具

    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools&quo ...

  6. Windows 下 vc++运行库安装,Microsoft Visual C++ Build Tools官方工具

    在用pycharm过程中,用pip去安装一些第三方包的时候会出现如下错误,缺少C++编译器,因为有些程序需要使用,没有C++接口会报错,查阅相关资料及自己的解决方案 error: Microsoft ...

  7. VC环境下的静态库(lib)使用和动态库(Dll)的使用(清晰版)

    VC环境下的静态库使用 一.  静态库包括.lib和.h文件,在工程中使用静态库分为3步: <1> 在工程中加入静态库,有三种方法: **方法一:项目设置中引用.lib,project-& ...

  8. Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“(已解决)

    这个error的产生原因是,因为我们在install一些python包的时候,由于windows需要一个c++编译器而产生的(我道听途说的).这里,我install的是inplace_abn,是一个训 ...

  9. androidsdktools安装_如何命令行安装Android SDK Build Tools(构建工具)?

    Android构建工具安装的问题 我想从命令行建立Android开发环境,遇到了如下问题: wget http://dl.google.com/android/android-sdk_r22.0.5- ...

最新文章

  1. Spring boot切换日志框架
  2. 张亚勤:PC之外的争夺战
  3. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分
  4. 【Linux】Linux中变量#,@,0,1,2,*,$$,$?的解释
  5. Linux emacs考场配置及对拍脚本
  6. Linux. C open创建文件,c-为什么open()用错误的权限创建我的文件?
  7. 广州大学机器学习与数据挖掘实验一:线性回归
  8. matlab 傅里叶变换 频谱图,傅里叶变换与信号频谱图.PDF
  9. R语言实现 懒惰学习——使用近邻分类
  10. matlab c盘空间,手动清理C盘空间
  11. qq飞车鸿蒙车队,qq飞车手游鸿蒙版
  12. 16进制颜色值与百分比颜色值的换算关系
  13. 1696C. Fishingprince Plays With Array【思维题 + 中间状态 + 优化存储】
  14. apollo github的说明介绍
  15. 验证码——python去除干扰线
  16. 【愚人特稿】数学家应该重新设计角度制--(转自果壳网)
  17. Rocketmq同项目多个生产者多个消费者问题
  18. ORACLE 获取某一日期所在周的周一
  19. android读取主板数据恢复,技术大招!只剩主板的坏手机也能数据恢复
  20. 【UE4源代码观察】尝试调试UBT

热门文章

  1. PHP注入漏洞(附代码,具体步骤)
  2. 2017 Multi-University Training Contest - Team 7:1003. Color the chessboard(...)
  3. bzoj 2440: [中山市选2011]完全平方数(二分+莫比乌斯函数)
  4. python基础系列教程——python基础语法全解
  5. 基于Struts2框架的超市人事工资管理系统
  6. quartsu仿真8:二五十计数器74290的基本功能
  7. AD画PCB焊盘上出现白圈改网络
  8. ZooKeeper CentOS7上安装
  9. VScode 同时开多个窗口
  10. .bash_profile和.bashrc的什么区别