分享

关于VC为命令行生成设置路径和环境变量

 quasiceo 2016-10-11

关于VC为命令行生成设置路径和环境变量


最近在做一些与SDK相关的东西时,要直接用命令行编译源代码,然后生成可执行文件。于是研究了一下,现在把我的心得简单写一下,方便以后自己或大家不知道如何设置时查看。

 

方法

其实VC安装目录中有个批处理文件(.bat)可以直接帮我们设置好环境变量的(不知道低版本的VC有没有)。msdn教程链接如下:

32位:http://msdn.microsoft.com/zh-cn/library/f2ccy3wt.aspx

@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

64位:http://msdn.microsoft.com/zh-cn/library/x4d2c09s.aspx

简单的来说,就是找到 Visual C++ 安装的目录。(VS2010默认情况下,完整路径为 C:\Program Files\Microsoft Visual Studio 10\VC\,64位的直接运行其中的vcvarsall.bat32位的转到bin子目录运行vcvars32.bat

 

方法二:

如果方法一不可行,或者没找到那个批处理文件,那么我们就自己设置吧。

其实批处理文件中就是帮我们设置一堆路径,但是有一些不一定是必要的,所以我这里就说说几个重要的、在正常情况下设置了就可以编译的环境变量。

以下变量名大小写不区分。%VCINSTALLDIR%VC的安装路径,VS2010默认为C:\Program Files\Microsoft Visual Studio 10\VC\%DevEnvDir%Visual Studio .NET的安装路径,VS2010默认为C:\Program Files\Microsoft Visual Studio 10\ Common7\IDE\

变量名:INCLUDE

变量值:%VCINSTALLDIR%\INCLUDE

变量名:LIB

变量值:%VCINSTALLDIR%\LIB

变量名:PATH

变量值: %VCINSTALLDIR%\BIN;%DevEnvDir%

以上是一些基本的环境变量,当然一般来说可能还会包含WindowsSDK%WindowsSdkDir%WindowsSdk的安装路径,一般为C:\Program Files\Microsoft SDKs\Windows\v7.0A\

PATH=%WindowsSdkDir%\bin

INCLUDE=%WindowsSdkDir%\include

LIB=%WindowsSdkDir%\lib

除此之外,如果有一些需要自己包含的路径就自己添加啦。

 

设置好环境变量之后就可以用cl.exe在命令行中编译.cpp文件了。

 

PScl.exerc.exelink.exe分别为VC代码编译器、资源编译器和链接器。cl.exe编译源代码为中间文件(.obj)rc.exe编译资源描述文件为资源文件(.rc)后, link.exe链接程序。而平常我们在 VC工程中配置的一些参数,实际上是cl.exe或者link.exe后面加上一些参数而已。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多