深入探究VC —— 编译器cl.exe(1)

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:

// 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

(如果被修改过的并不是默认如此,设置完成需要重启电脑)

 

好了,关于编译器命令行参数暂时就学习到这了~~~

本文来自CSDN博客,转载请标明出处:http://www.cnblogs.com/lidabo/admin/file:///C:/Documents%20and%20Settings/Administrator/桌面/MFC-20100806文章/MFC-20100806文章/深入探究VC%20——%20编译器cl_exe(1)%20-%20zxzqwq2009的专栏%20-%20CSDN博客.htm

时间: 2024-10-21 11:34:13

深入探究VC —— 编译器cl.exe(1)的相关文章

深入探究VC —— 编译器cl.exe(2)

这一章节介绍的全是VC编译器选项,option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂.也是最常用的.下面介绍一些常用的编译选项: 1.代码生成有关 这些选项将影响编译完成后生成的机器代码:     2.调试有关 与调试有关的编译选项如下图,/Z7./Zi./ZI这三个选项是对程序进行调试时所必需的选项,同时注意,在生成调试版本的程序时,需要指定/Od选项以禁用优化:   3.程序优化有关 与程序优化有关的选项如下图,优化选项将影响编译器对代码的优化,最选择代码体积最小还是

从“XX\Microsoft Visual Studio 9.0\VC\bin\cl.exe”返回)

问题描述 从"XXMicrosoft Visual Studio 9.0VCincl.exe"返回) 我原来有一个项目是使用VS2005开发的,现在转换成使用vs2008,但是编译的时候一直报: 错误的结果 1 (从"C:Program FilesMicrosoft Visual Studio 9.0VCincl.exe"返回) 这个错误,别的转换项目不会报这个错误,有没有大神指导一下! 解决方案 (从"C://Program Files//Microso

深入探究VC —— 链接器link.exe(4)

在程序编译完成后,生成的文件是以.obj为扩展名的对象文件,link.exe是将这些对象文件与库链接起来以创建可执行文件或动态链接库文件的工具. link.exe的输入文件包括obj文件.lib文件.exp文件.def文件.res文件.txt文件.ilk文件等等,而输出的文件一般是exe文件.dll文件.sys文件等可执行程序文件. 1.命令行参数 link.exe运行参数如下: LINK [options] files 参数包括选项和文件名,选项和文件名可按任意顺序指定.link会首先处理选项

深入探究VC —— 资源编译器rc.exe(3)

Windows应用程序中,图标.菜单.畏途.图标.工具条.对话框等是以资源的形式存在的.开发人员也可以自定义资源类型.如果一个程序使用了资源,那么它在构建时需要对资源进行编译.程序所使用的资源会在资源脚本文件(*.rc)中进行描述编写,编译时,资源编译器会将*.rc文件编译为可链接的.res文件.(资源中可以包括字符串) 1.命令行参数 使用如下方式在命令行中运行rc.exe RC [options] srcipt-file options是编译选项,script-file是需要编译的资源脚本文

跪求大神-vc++6.0出现error spawning cl .exe怎么解决

问题描述 vc++6.0出现error spawning cl .exe怎么解决 程序是对的一编译就出现error spawing cl.exe用的是win8.1系统.......求各位大神解答 解决方案 如果你的程序没有问题,那是因为vc++ 6.0和windows 8.1的不兼容造成的如果你坚持使用vc++6.0,并且不打算用虚拟机(虚拟机,xp上跑VC++ 6是最佳做法) 参考:http://download.csdn.net/album/detail/639下载我提供的VC++和http

安装OPENCV的时候Failed to locate: &amp;amp;quot;CL.exe&amp;amp;quot;.这个错误怎么解决

问题描述 安装OPENCV的时候Failed to locate: "CL.exe".这个错误怎么解决 安装OPENCV的时候Failed to locate: "CL.exe".这个错误怎么解决 解决方案 cl.exe是你vc编译器的命令程序 需要告诉opencv去哪里找? 解决方案二: http://blog.csdn.net/arthurfangmc/article/details/14223919

vs2008生成“cl.exe”时出错

问题描述 vs2008生成"cl.exe"时出错 无法启动程序"C:UsersmyDesktoptestDebugtest.exe" vs2008生成"cl.exe"时出错 解决方案 打开任务管理器看是不是有个调试程序没关掉 解决方案二: 开一下项目属性中,生成的可执行文件目录配置是哪里 解决方案三: 预编译设置的问题. 在VC中,依次点击""project""->""Settin

VC++根据explorer.exe进程检测用户是否已登录

      下面来看一个VC++根据explorer.exe进程检测用户是否已登录,希望例子能帮助到各位.  代码如下   void CALLBACK timeCall(UINT timeid, UINT umsg, DWORD_PTR dwUser, DWORD dw1, DWORD_PTR dw2) {  DWORD dwSessionId = WTSGetActiveConsoleSessionId();        //获取控制台的session  HANDLE hSnap = Cre

深入解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析

许可证编译器 (Lc.exe) 的作用是读取包含授权信息的文本文件,并产生一个可作为资源嵌入到公用语言运行库可执行文件中的 .licenses 文件   在使用第三方类库时,经常会看到它自带的演示程序中,包含有这样的Demo许可文件 复制代码 代码如下: Infragistics.Win.Misc.UltraButton, Infragistics2.Win.Misc.v11.1, Version=11.1.20111.2009, Culture=neutral, PublicKeyToken=