cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件。cl.exe命令行参数形式如下:
CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...]
各命令行参数的意义如下 :
1、option
命令行中的"option"是指一个或多个编译选项。在指定选项时,需要在选项前加正斜杠(/)或一个短划线(-)。有一些选项还会带有参数,使用":"来指定选项的参数。比如"/sybsystem:windows,5.0"是一个编译选项,表示可执行程序执行所依赖的子系统是Windows(Win32图形用户界面的应用程序),版本最低5.0(即Windows 2000)。选项名区分大小写(/HELP选项除外),而且除了/link选项之外,其他选项是顺序没有要求。在编译时所指定的所有选项都将应用于用户指定的所有源文件。option命令行参数是可选。
2、file
命令行中的"file"是一个或多个所需要编译的源文件,也可以是.obj文件或库文件。cl.exe编译源文件并将.obj文件和库的名称传递给编译器。file参数是编译器的必须参数。
3、lib
该选项用于指定一个或多个库名。cl.exe直接将这些名称传递给链接器。lib是cl.exe的可选参数。
4、command-file
它包含多个选项和文件名的文件,为可选参数。
5、link-opt
一个或多个链接器选项。CL将这些选项传递给链接器,也是可选参数。
举例Hello World:
view plaincopy to clipboardprint?
// File Name: Hello.c
// Description: First Win32 Application
// by Koma 2009-11-18 22:05
#include <windows.h>
#pragma comment(lib,"user32.lib")
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pszCmdLine, int cmdShow)
{
MessageBox(NULL,"Hello World !","Test",MB_OK);
return 0;
}
那么编译该源文件命令行下:
cl /O2 /Fa /Gz /Fo Hello.c
"Hello.c"前面的都是编译选项(即option参数),"Hello.c"是源文件(file参数),没有使用lib、command-file、link-opt等命令行参数。
在命令行编译前,需要设置环境变量
include C:\Program Files\Microsoft Visual Studio\VC98\Include
lib C:\Program Files\Microsoft Visual Studio\VC98\Lib
path C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\VC98\Bin
(如果被修改过的并不是默认如此,设置完成需要重启电脑)
option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂、也是最常用的。下面介绍一些常用的编译选项:
1、代码生成有关
这些选项将影响编译完成后生成的机器代码:
2、调试有关
与调试有关的编译选项如下图,/Z7、/Zi、/ZI这三个选项是对程序进行调试时所必需的选项,同时注意,在生成调试版本的程序时,需要指定/Od选项以禁用优化:
3、程序优化有关
与程序优化有关的选项如下图,优化选项将影响编译器对代码的优化,最选择代码体积最小还是选择运行速度最快等需要使用这些选项:
4、输出文件有关
与生成的输出文件有关的选项如下图,输入文件在参数中需要使用字符串来指定其路径,字符串使用双引号("")括起来,如/Fd "BIN\\"。注意字符串的转意字符,如果需要使用单斜杠表示文件路径,需要使用双杠("\\"):
5、预处理器有关
与预处理器有关的选项如下图,这些选项将影响预处理器的运行,比如通过/D选项可以达到与在源代码中使用#define定义基本相同的效果:
6、链接有关
与链接有关的选项如下图,编译器可以调试链接器,向链接器传递调用参数。/link选项完成这项功能,还可以指定堆栈的大小,创建动态链接库等:
7、预编译有关
与预编译有关的选项如下图,这些编译选项会影响预编译结果:
8、语言有关
与语言有关的选项如下图,比如/Za、/Ze选项表示是否支持微软的语言扩展,还是只支持标准 C/C++。/Zp选项可以指定结构中的成员对齐方式,这将影响到生成的程序中结构体的大小。在一些协议头的处理中,/Zp选项非常有用:
9、其他选项
这些选项的影响是多方面的,不太好分类。包括显示帮助信息、设置警告等。
相关推荐
VC中cl.exe命令参数详解.pdf
VC6.0编译器介绍.pdf
opencascade-7.6.0-vc14-64.exe 官方原版,安装测试正常
VC中cl.exe命令参数详解[借鉴].pdf
VC-redist.x86.exe
Error spawning cl.exe, VC 6.0编译报错出现时解决方案,在VC 6.0编译时出现上述错误
vc_redist.x86.exe
c++代码贪吃蛇游戏直接复制到vc6.0编译器即可.docx
环境变量的配置。VC6的编译工具提取后使用需要配置环境变量,源码显示了注册表的修改及立即生效过程
C代码贪吃蛇游戏直接复制到VC6.0编译器即可.pdf
VC调试出现“Compiling... ,Error spawning cl.exe”错误的解决办法
windows版本得xampp,xampp-windows-x64-7.2.30-0-VC15-installer.exe
xampp-win32-5.6.30-0-VC11-installer.exe xampp-win32-5.6.30-0-VC11-installer.exe
图像匹配 opencv-2.4.13.6-vc14.exe和opencv-4.1.0-vc14_vc15.exe
vc_redist.x64.exe是微软官方推出的VC++运行库安装包,包含了一些Visual C++的库函数。这些包可用于在计算机上运行此类应用程序,即使没有安装Visual Studio 2015。这些包安装以下库的运行时组件:C运行时 (CRT)、...
VC_redist.x86(2015-2019).exe
解压后运行opencv-4.1.0-vc14_vc15.exe,指定解压目录,建议放到根目录下,无中文字符。 运行build目录下的setup_vars_opencv4.cmd,设置OpenCV变量。 在VS项目中添加头文件路径、包含文件路径、库文件路径,编译...
VC_redist.x64.exe
使用vc++编译器cl.exe包含了相当多比要\非必要的选项, 如何使用真是太多学问. 使用vc60的配置向导有些问题也不尽能全部解决, 参考一下选项的说明也显的比较有必要.
VC_redist.x64 (2015-2019).exe