VC命令行编译参数介绍
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将这些选项传递给链接器。
VC命令行编译参数介绍的更多相关文章
- Azure CLI 2.0-Azure新命令行工具介绍
Azure CLI 2.0 是 Azure 的新命令行体验,用于管理 Azure 资源. 可以将其安装在 macOS.Linux 和 Windows 上,然后从命令行运行它. Azure CLI 2. ...
- Linux性能查看与分析--命令行工具介绍
本文介绍工作中常用的几个linux性能查看命令:top,sar,vmstat,iostat,pidstat等. 1.top top是最常用的linux性能分析工具,它能够实时的显示系统中各个进程的资源 ...
- tp5命令行基础介绍
查看指令 生成模块 生成文件 生成类库映射文件 生成路由缓存文件 生成数据表字段缓存文件 指令扩展示例 命令行调试 命令行颜色支持 调用命令 查看指令 命令行工具需要在命令行下面执行,请先确保你的ph ...
- linux命令行解析函数介绍
函数原型: int getopt(int argc,char * const argv[ ],const char * optstring); 给定了命令参数的数量 ( ...
- VC命令行编译中出现Invalid switch错误的解决办法
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用makefile编译gdal库出现一个错误: cd .. if exist./gdal19_i_D.lib del ...
- 如何用命令行编译c++程序
作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话.虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在.从客观的角度来讲,一方面, ...
- 以app形式启动chrome——关于chrome命令行
转自:http://wiselyman.iteye.com/blog/2179043 转自:http://bbs.ithome.com/thread-589651-1-1.html 转自:http:/ ...
- 微软官方的.net命令行参数库
虽然现在是图形化大行其道的时代,但让程序支持命令行启动对于专业的领域还是有不少需求的..net本身并没有内置对命令行解析的支持,我之前就写过一篇文章让.Net程序支持命令行启动介绍了几个第三方的命令行 ...
- HDFS中的命令行
HDFS中的命令行 本文介绍了HDFS以命令行执行的时候.几个经常使用的命令行的作用和怎样使用~ 1. fs fs是启动命令行动作,该命令用于提供一系列子命令. 使用形式为hadoop fs –cmd ...
随机推荐
- javascript的isPrototypeOf函数的理解
JavaScript中isPrototypeOf函数方法是返回一个布尔值,指出对象是否存在于另一个对象的原型链中.使用方法: object1.isPrototypeOf(object2)~~~原型链理 ...
- SIM卡厂商的识别方法
ICCID(SIM卡号码)的定义应该是: 1-6位:国际移动运营商识别码(IMSI),898600为中国移动,898601为中国联通 7-20位:移动和联通的定义是不同的. 中国移动: 第7.8 ...
- jQuery.fn.serialize 阅读
今天第一次阅读jQuery源码,因为读到用js对表单的序列化,为的是在ajax操作中将表单中各个域的值传到服务器.书上用了很长的步骤,判断每一个表单域的属性,然后拼接. 大概是这样: function ...
- http://download.qt-project.org/archive/qt/4.5/qt-all-opensource-src-4.5.2.tar.bz2
Index of /archive/qt/4.5 http://download.qt-project.org/archive/qt/4.5/qt-all-opensource-src-4.5.2.t ...
- SQL server 数据库视频总结
用了半个多月的时间把,浙江大学耿建玲老师 数据库视频看了一遍.在看视频之前,曾经接收了一个学生信息管理系统,在学习 学生信息管理系统的时候,对于数据库的部分,总是那么一知半解.带着疑惑来看耿建玲老师 ...
- Spring MVC遭遇checkbox的问题解决方式
Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变量为null,不能动态绑定到spring的controller方法的入參上,并抛出异常. 解决 ...
- [置顶] Asp.Net底层原理(二、写自己的Asp.Net框架)
我们介绍过了浏览器和服务器之间的交互过程,接下来介绍Asp.net处理动态请求. 写自己的Asp.Net框架,我们不会引用System.Web这个程序集,我们只需要创建要给自己的类库,所以在接下来的程 ...
- Android API 中文(77)——AdapterView.OnItemSelectedListener
前言 本章内容是android.widget.AdapterView.OnItemSelectedListener,版本为Android 2.3 r1,翻译来自"cnmahj",欢 ...
- CSS3属性值之box-shadow
语法: box-shadow:inset x-offset y-offset blur-radius spread-radius color 也就是: 对象选择器 {box-shadow:投影 ...
- java线程之停止线程
在Java中有以下3种方法可以终止一个正在运行的线程: 1.使用退出标志,是线程正常退出,也就是run方法完成后线程终止. 2.使用stop方法强制终止线程,但不推荐使用 ...