CL.exe是控制Microsoft C和C++编译器与链接器的32位工具。编译器产生通用对象文件格式(COFF)对象(.obj)文件。链接器产生可执行文件(.exe)或动态链接库文件(DLL)。
注意,所有编译器选项都区分大小写。 若要编译但不链接,请使用/c。 使用NMAKE生成输出文件。 使用BSCMAKE支持类浏览。 以下是一个完整的编译器选项分类列表。 优化 选项 作用 /O1 创建小代码 /O2 创建快速代码 /Oa 假设没有别名 /Ob 控制内联展开 /Od 禁用优化 /Og 使用全局优化 /Oi 生成内部函数 /Op 改善浮点数一致性 /Os 代码大小优先 /Ot 代码速度优先 /Ow 假定在函数调用中使用别名 /Ox 使用最大优化(/Ob1gity /Gs) /Oy 省略框架指针 代码生成 选项 作用 /clr 启用C++的托管扩展并产生在公共语言运行库上运行的输出文件 /EH 指定异常处理模型 /G3 优化代码以优选386处理器。在Visual C++ 5.0中已经停用,编译器将忽略此选项 /G4 优化代码以优选486处理器。在Visual C++ 5.0中已经停用,编译器将忽略此选项 /G5 优化代码以优选Pentium /GB 与/G6等效;将_M_IX86的值设置为600 /Gd 使用__cdecl调用约定 /Ge 激活堆栈探测 /GF /GF 启用字符串池 /GH 调用挂钩函数_penter /GH 调用挂钩函数_pexit /GL 启用全程序优化 /Gm 启用最小重新生成 /Gr 启用运行时类型信息(RTTI) /Gr 使用__fastcall调用约定 /GS 控制堆栈探测 /GT 支持使用静态线程本地存储区分配的数据的纤程安全 /GX 启用同步异常处理 /Gy 启用函数级链接 /GZ 使用__stdcall调用约定 /MD 使用MSVCRT.lib创建多线程DLL /MDd 使用MSVCRTD.lib创建调试多线程DLL /ML 使用LIBC.lib创建单线程可执行文件 /MLd 使用LIBCD.lib创建调试单线程可执行文件 /MT 使用LIBCMT.lib创建多线程可执行文件 /MTd 使用LIBCMTD.lib创建调试多线程可执行文件 输出文件 选项 作用 /FA /FA 创建列表文件 设置列表文件名 /Fd 重命名程序数据库文件 /Fe 重命名可执行文件 /Fm 创建映射文件 /Fo 创建对象文件 /Fp 指定预编译头文件名 /FR /FR 生成浏览器文件 /Fx 将插入的代码与源文件合并 调试 选项 作用 /GS 缓冲区安全检查 /GZ 与/RTC1相同 /RTC 启用运行时错误检查 /Wp64 检测64位可移植性问题 /Yd 将完整的调试信息放在所有对象文件中 /Yl 创建调试库时插入PCH引用 /Z7 生成与C 7.0兼容的调试信息 /Zd 生成行号 /Zi 生成完整的调试信息 预处理器 选项 作用 /AI 指定在解析传递到#using指令的文件引用时搜索的目录 /c 在预处理期间保留注释 /D 定义常数和宏 /E 将预处理器输出复制到标准输出 /EP 将预处理器输出复制到标准输出 /Fl 预处理指定的包含文件 /FU 强制使用文件名,就像它已被传递到#using指令一样 /I 在目录中搜索包含文件 /P 将预处理器输出写入文件 /U 移除预定义宏 /U 移除所有的预定义宏 /X 忽略标准包含目录 /ZI 将调试信息包含在与“编辑并继续”兼容的程序数据库中 语言 选项 作用 /noBool 取消C++ bool、true和false关键字 /vd 取消或启用隐藏的vtordisp类成员 /vmb 对指向成员的指针使用最佳的基 /vmg 对指向成员的指针使用完全一般性 /vmm 声明多重继承 /vms 声明单一继承 /vmv 声明虚拟继承 /Za 禁用语言扩展 /Zc 在/Ze下指定标准行为 /Ze 启用语言扩展 /Zg 生成函数原型 /Zl 从.obj文件中移除默认库名 /Zp n 封装结构成员 /Zs 只检查语法 链接 选项 作用 /F 设置堆栈大小 /LD 创建动态链接库 /LDd 创建调试动态链接库 /link 将指定的选项传递给LINK /MD 使用MSVCRT.lib编译以创建多线程DLL /MDd 使用MSVCRTD.lib编译以创建调试多线程DLL /ML 使用LIBC.lib编译以创建单线程可执行文件 /MLd 使用LIBCD.lib编译以创建调试单线程可执行文件 /MT 使用LIBCMT.lib编译以创建多线程可执行文件 /MTd 使用LIBCMTD.lib编译以创建调试多线程可执行文件 预编译头 选项 作用 /Y- 忽略当前生成中的所有其他预编译头编译器选项 /Yc 创建预编译头文件 /Yd 将完整的调试信息放在所有对象文件中 /Yu 在生成期间使用预编译头文件 /YX 自动处理预编译头 杂项 选项 作用 @ 指定响应文件 /? 列出编译器选项 /c 编译但不链接 /H 限制外部(公共)名称的长度 /HELP 列出编译器选项 /J 更改默认的char类型 /NOLOGO 取消显示登录版权标志 /QI0f 确保Pentium 0F指令没有问题 /QIfdiv FDIV、FPREM、FPTAN和FPATAN指令有缺陷的Intel Pentium微处理器的变通方法 QIfist 当需要从浮点类型转换为整型时取消Helper函数_ftol的调用 /showIncludes 在编译期间显示所有包含文件的列表 /Tc /Tc 指定C源文件 /Tp /Tp 指定C++源文件 /V 设置版本字符串 /w 设置警告等级 /w 禁用所有警告 /Wall 启用所有警告,包括默认情况下禁用的警告 /WL 在从命令行编译C++源代码时启用错误信息和警告消息的单行诊断 /Zm 设置编译器的内存分配限制 CL 命令行使用下列语法: CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...] 下面说明CL命令的输入项意义 option 一个或多个CL选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个正斜杠(/)或一个短划线(–)指定的。如果某个选项带有参数,则该选项的说明指定在选项和参数之间是否允许有空格。选项名(/HELP选项除外)区分大小写。有关更多信息,请参阅CL选项的顺序。 file 一个或多个源文件、.obj文件或库的名称。CL编译源文件并将.obj文件和库的名称传递给链接器。有关更多信息,请参阅CL文件名语法。 lib 一个或多个库名。CL将这些名称传递给链接器。
您可以指定任意数目的选项、文件名和库名,条件是命令行上的字符数不超过1024,该限制是操作系统指定的。 command-file 包含多个选项和文件名的文件。有关更多信息,请参阅CL命令文件。 link-opt 一个或多个链接器选项。CL将这些选项传递给链接器。