您的位置:首页 > 其它

如何配置msvc命令行环境

2012-02-24 09:38 323 查看


如何配置msvc命令行环境

有些时候使用命令行而不是IDE去编译源代码会比较方便。

而在命令行下使用msvc的编译器——cl, 需要为其配置环境

一、 环境变量测试

测试cl的环境是否配置妥当, 可以执行如下测试:

win键+R 启动运行 -> 输入cmd(winnt系列)或者command(win95系列) -> 回车, 打开命令行窗口。

键入"cl"并回车, 如果有类似如下的输出 :

--------------------------------------------------------------------------------

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86

Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

--------------------------------------------------------------------------------

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86

Copyright (C) Microsoft Corporation. All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

--------------------------------------------------------------------------------

用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 15.00.30729.01 版

版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

--------------------------------------------------------------------------------

一般来说, 就可以在命令行下使用cl了。

cl文件版本与VS版本、VC产品版本、_MSC_VER宏的对应关系如下表:

VS版本
VC产品版本号
cl文件版本号
_MSC_VER宏的值
98
6.x
12.x
1200
2005
8.x
14.x
1400
2008
9.x
15.x
1500
二、 测试失败

如果出现:

1. “cl不是内部或外部命令,也不是可运行的程序或批处理文件。”

说明cl不在Path环境变量中。

2. 找不到xxx.dll。

cl在Path环境变量中, Path中缺少必要的dll的路径。

3. 上述测试通过, 但是在编译时出现找不到头文件或者库。

说明Path环境变量中有cl和必要dll的路径, 但是仍缺少其他一些环境变量。

这些情况, 都需要进一步配置环境变量。

三、 配置环境变量

三.1 、让安装包帮助注册环境变量

VC6在安装的时候,会弹出一个对话框,让你选择是否注册VC6的环境变量。如下:

For your convenince, the environment variables required to run build tools from a command prompt are saved in the VCVARS32.BAT in your BIN directory

(复选框) Register Environment Variables



Turn on this option to register environment variables for running Visual C++ tools from the command line.

默认复选框是没有选中的。

如果选中, 安装完毕后就会添加必要的环境变量。

所以, 一个办法是重新安装VC6(反正很小,相对于VC8、9安装十分快速)。

三.2 、手工添加环境变量

以VC6举例,我们可以在 :“我的电脑” -> “属性” -> “高级” -> “环境变量”中添加如下变量:

%Path%="prefix/Microsoft Visual Studio/VC98/Bin";%Path%

cl.exe所在路径。

%include%="prefix/Microsoft Visual Studio/VC98/Include";%include%

%lib%="prefix/Microsoft Visual Studio/VC98/Lib";%lib%

C/C++以及Platform SDK

%include%="prefix/Microsoft Visual Studio/VC98/MFC/Include";%include%

%lib%="prefix/Microsoft Visual Studio/VC98/MFC/Lib";%include%

MFC

%include%="prefix/Microsoft Visual Studio/VC98/ATL/Include";%include%

ATL

(其中的prefix是安装目录的前缀)之后就可以在命令行中使用cl了。

同时, VC6、8、9都提供了一个批处理vcvars32.bat

我们可以查看相应的vcvars32.bat最终做了什么工作,而手工加入需要的变量。

下内容摘自我机器上的vsvars32.bat(VC8、9的vcvars32.bat最终调用它们):




vc8

@set PATH=D:/Program Files/Microsoft Visual Studio 8/Common7/IDE;D:/Program Files/Microsoft Visual Studio 8/VC/BIN;D:/Program Files/Microsoft Visual Studio 8/Common7/Tools;D:/Program Files/Microsoft Visual Studio 8/Common7/Tools/bin;D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;D:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/bin;C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;D:/Program Files/Microsoft Visual Studio 8/VC/VCPackages;%PATH%

@set INCLUDE=D:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/INCLUDE;D:/Program Files/Microsoft Visual Studio 8/VC/INCLUDE;D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include;D:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/include;%INCLUDE%

@set LIB=D:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB;D:/Program Files/Microsoft Visual Studio 8/VC/LIB;D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;D:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/lib;%LIB%

@set LIBPATH=C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;D:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB




vc9

@set PATH=D:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE;D:/Program Files/Microsoft Visual Studio 9.0/VC/BIN;D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools;C:/WINDOWS/Microsoft.NET/Framework/v3.5;C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;D:/Program Files/Microsoft Visual Studio 9.0/VC/VCPackages;%PATH%

@set INCLUDE=D:/Program Files/Microsoft Visual Studio 9.0/VC/ATLMFC/INCLUDE;D:/Program Files/Microsoft Visual Studio 9.0/VC/INCLUDE;%INCLUDE%

@set LIB=D:/Program Files/Microsoft Visual Studio 9.0/VC/ATLMFC/LIB;D:/Program Files/Microsoft Visual Studio 9.0/VC/LIB;%LIB%

@set LIBPATH=C:/WINDOWS/Microsoft.NET/Framework/v3.5;C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;D:/Program Files/Microsoft Visual Studio 9.0/VC/ATLMFC/LIB;D:/Program Files/Microsoft Visual Studio 9.0/VC/LIB;%LIBPATH%

可以根据它们,给VC8、9设置环境变量。

三.3 、使用vcvars32.bat

上面提到vcvars32.bat,它们的位置如下:

VC6 prefix/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT

VC8 prefix/Microsoft Visual Studio 8/VC/bin/vcvars32.bat

VC9 prefix/Microsoft Visual Studio 9.0/VC/bin/vcvars32.bat

需要注意的是: 这些批处理文件只会在当前进程中设置(局部的)环境变量,也就是说:

1. 用cmd(或者command)打开的命令行窗口中, 运行某个vcvar32.bat一次。

那么当前命令行窗口中就可以正常使用cl,直到关闭。

2. 写批处理文件需要使用call prefix/vcvars32.bat,而不是直接启动vcvars32.bat。

前者为当前进程(cpl.bat创建的进程)添加局部于进程环境变量。

后者启动一个进程, 为其加入环境变量, 然后该进程立即退出——没有任何作用。

三.4、 使用VSXXCOMNTOOLS变量(VC8、9)

对于VC8、9有另一种方式——不注册全局的(系统或当前用户)环境变量,仅为当前进程设置(局部的)环境变量。

因为VC8、9都可以很方便的为单个进程设置环境变量。

观察vc8和vc9的vcvars32.bat的内容(位置见上), 发现它们都只有一行:

"%VS80COMNTOOLS%vsvars32.bat"

"%VS90COMNTOOLS%vsvars32.bat"

VS80COMNTOOLS、VS90COMNTOOLS(注意不是VC而是VS)分别是VS2005和VS2008安装后会设置的环境变量。

所以我们也可以在自己的批处理中,很方便的为当前进程设置需要的环境变量。如下:

call "%VS80COMNTOOLS%vsvars32.bat"

以下cl命令将执行VC8的cl。

call "%VS90COMNTOOLS%vsvars32.bat"

以下cl命令将执行VC9的cl。

四、 总结

如果仅需要使用某个版本的VC, 并且只为自己方便而使用命令行, 可以使用上面任何一种方式。

简单归纳如下:

1、 使用全局环境变量——在系统或当前用户变量中加入需要的值。

1.1 重新安装

1.2 手工加入

2、 不使用全局环境变量

——在执行cl前,先使用对应的vcvars32.bat(命令行窗口中执行或者脚本中call prefix/vcvars32.bat)。

2.1 将vcvars32.bat加入Path变量

2.2 使用"%VSXXCOMNTOOLS%vsvars.bat" (VC8、9) 或者 absolutePath/vcvars32.bat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: