有些时候使用命令行而不是IDE去编译源代码会比较方便。 一、 环境变量测试 测试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 链接选项... ] --------------------------------------------------------------------------------
二、 测试失败 如果出现: 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
vc9
可以根据它们,给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 如果需要使用多个版本的VC、 或者需要将编译脚本发布给客户使用, 就不能这么随意了。 具体见:《配置msvc命令行环境(续)——编写msvc编译脚本》
相关链接: ——《配置msvc命令行环境(续)——编写msvc编译脚本》 http://www./ownwaterloo/archive/2009/04/16/write_compile_script_for_msvc.html
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。 转载请注明 : 文章作者 - OwnWaterloo 发表时间 - 2009年04月15日 原文链接 - http://www./ownwaterloo/archive/2009/04/15/environment_for_using_cl_from_command_line.html |
|