cl.exe 命令行参数形式如下:
CL [option...] file [option|file]...[lib...] [@commandfile][/link link-opt...]
编译器选项option:
(1) 与代码生成有关的的选项:
/arch 使用SSE或SSE2指令生成代码,对程序进行优化(仅限X86)。
/bigobj 增大 .obj文件的可寻址节数.
/clr 生成要在公共预言运行库上运行的输出文件.
/EH 指定已成处理模型
/EH:a 表示捕获异步(结构化)异常并通知编译器假定extern C 函数确实引发了异常的异常处理模型
/EH:s 不捕获异步异常并通知编译器假定extern C 函数确实引发了异常的异常处理模型
/EH:c 如果与a使用则为捕获异步异常的异常处理模型.如果与s使用,则为不捕获异步异常的异常处理模型.在这两种情况
下,c 通知编译器假定 extern C 函数从不引发异常.
/fp 指定浮点数行为
/Ge 激活堆栈探测.
/GF 启用字符串池
/Gm 启用最小重新生成
/GR 启用运行时类型信息(RTTI)
/Gd /Gr /Gz 分别是使用__cdecl调用,使用__fastcall 调用约定,使用__stdcall约定,仅限X86 ,这三个选项是互斥的.
/Gs 控制堆栈探测
/GX 启用同步异常处理
/Gy 启用函数级链接
/MD /MDd /MT /MTd 分别是指使用MSVCRT.lib创建多线程DLL,使用MSVCRTD.lib 创建调试多线程DLL,使用LIBCMT.lib创建
多线程可执行文件,使用LIBCMTD.lib创建调试多线程可指定文件,这四个选项是互斥的.
(2)与调试有关的编译选项:
/GS 缓冲区安全检查
/GZ 与RTCl相同
/RTC 启用运行时错误检查
/Wp64 检测64位可移植性问题
/Yd 将完整调试信息放在所有对象文件中
/Yl 创建调试库时插入PCH引用
/Z7 /Zi /ZI 生成调试信息,分别表示三种不同的调试符号的文件格式
........