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 ...
随机推荐
- 浅谈RFID电子标签封装技术
1RFID技术概述 1.1RFID技术概念 RFID是RadioFrequencyIdentification的缩写,即射频识别技术,俗称电子标签.RFID射频识别是一种非接触式的自动识别技术,它通过 ...
- QT 获取文件MD5值
/* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptogra ...
- HDU 1130 How Many Trees?
裸的卡特兰数 C++#include<iostream> #include<cstdio> using namespace std; #define base 10000 #d ...
- Python生成随机数的方法
这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下 如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与 ...
- java面试题系列11
华为的JAVA面试题 QUESTION NO: 1 publicclass Test1 { publicstaticvoid changeStr(String str){ ...
- Dancing Stars on Me(判断正多边形)
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- linux 进程间信号量管理程序之sem_timedwait使用
在开发过程中,有三个独立执行的程序模块,三个模块都对sqlite数据库进行读写操作.sqlite在linux共享性较差,所以须要增加相互排斥信号量解决三个模块訪问数据库该问题. 另外,在增加信号量后, ...
- NeHe OpenGL lession 4
// lession4.c #include <OpenGL/OpenGL.h> #include <GLUT/GLUT.h> #include <stdio.h> ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- GridView事件分析
GridView事件分析 (转) P1默认数据绑定过程 编号 事件名称 作用 E1 DataBinding 数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据 ...