MSVC编译参数

MSVC的cl.exe命令行编译参数详解
本文详细介绍了使用MSVC的编译器cl.exe进行命令行编译时涉及的各项参数,包括命令格式、环境变量、优化选项、代码生成、输出设置、预处理、语言配置、链接步骤、预编译头文件的使用以及各种杂项设置,为开发者提供了全面的cl.exe使用指南。
部署运行你感兴趣的模型镜像

msvc的命令行编译链接命令cl.exe

cl命令格式

CL [option…] file… [option | file]… [lib…] [@command-file] [/link link-opt…]

选项用途
option参数可以使用/或者-,具体含义可以使用/HELP option看到解释。
file一个或者多个源文件,.obj文件或者。lib文件,CL编译源文件传递.obj和.lib给linker
lib一个或多个库文件,cl将传送给linker
command-file一个保存多个选项的文件
link-opt一个或多个链接操作,cl将传递给linker

cl用到的环境变量

变量
INCLUDE指定vc的头文件位置,windows sdk的头文件位置。等等,中间用;分割。
LIB指定vc的库,windows sdk的库路径。中间用;分割。

优化参数

选项用途
/O1目标尺寸最小
/O2目标速度最快
/Ob控制inline扩展,/Ob{0/1/2}
/Od关闭优化
/Og使用全局优化
/Oi产生固定函数
/Os偏向尺寸优化
/Ot偏向速度优化
/Ox最佳优化
/Oy忽略帧指针(仅x86)
/favor对特定架构优化。/favor:{blend/ATOM/AMD64/INTEL64}

产生代码

选项用途
/arch产生代码时使用SSE或者SSE2指令(仅x86)
/clr产生运行在the common language runtime上的输出文件
/EH指定异常处理模型/EH{s/a}[c][r][-]
/fp指定浮点指针行为/fp:[precise/except[-]/fast/strict]
/GA对windows应用进行优化
/Gd使用_cdecl调用转换(仅x86)
/Ge激活堆栈探测
/GF打开字符串池
/Gh调用钩子函数_penter
/GH调用钩子函数_pexit
/GL打开整个程序优化
/Gm打开最小重建造
/GR打开运行时类型信息(RTII)
/Gr使用_fastcall调用转换(仅x86)
/GS检查缓冲区安全
/Gs控制堆栈探测
/GT使用静态线程本地存储时保证数据分配安全
/guard:cf加入控制流安全检查
/Gv使用_vectorcall调用转换(仅x86)
/Gw打开整个程序的全局数据优化
/GX打开同步异常处理
/Gy打开函数级链接
/GZ打开快速检查,等同于/RTC1
/Gz使用_stdcall调用转换(仅x86)
/homeparams强制参数通过寄存器传递,仅x64编译
/hotpatch创建一个补丁镜像
/Qfast_transcendentalsGenerates fast transcendentals.
/QIfist禁止从浮点转换为整数是调用函数_ftol(仅x86)
/Qimprecise_fwaits在try块内部移除fwait命令
/Qpar打开自动并行循环
/Gpar-report打开一个并行循环的报告级
/Gsafe_fp_loads对浮点值使用整数移动指令,禁止某些浮点指令的装入优化
/RTC)打开运行时错误检查
/volatile)解释执行选择怎样的volatile关键字

输出文件

选项用途
/doc处理注释文档到一个XML文件
/FA配置汇编列表文件
/Fa创建汇编列表文件
/Fd删除程序数据库文件
/Fe重命名执行文件
/Fi指定预处理输出文件名
/Fm创建mapfile
/Fo创建object文件
/Fp指定预编译头文件名
/FR /Fr参数浏览文件

预处理

选项用途
/AISpecifies a directory to search to resolve file references passed to the #using directive.
/CPreserves comments during preprocessing.
/D定预处理宏
/E复制预处理到标准输出
/EP复制预处理到标准输出
/FI预处理指定的include文件
/FUForces the use of a file name, as if it had been passed to the #using directive.
/Fx合并注入代码和源代码
/I指定include文件搜索路径
/P写预处理到一个输出文件
/U删除预定义宏
/u和/U相同
/X忽略标准include路径

语言

选项用途
/openmp打开#pragma omp在源代码中
/vd禁止或者打开隐藏vtordisp类的成员
/vmbUses best base for pointers to members.
/vmgUses full generality for pointers to members.
/vmm申明多继承
/vms申明单继承
/vmv申明虚拟继承
/Z7产生和C 7.0兼容的调试信息
/Za禁用语音扩展
/Zc指定一个标准行为在/Ze下
/Ze打开语音扩展
/Zg产生函数原型
/ZI在程序数据库中包括调试信息(仅x86)
/Zi产生完整的调试信息
/Zl从.obj文件中删除默认的库名
/Zpn打包结构成员
/Zs仅做语法检查
/ZW产生一个输出文件能运行在windows运行环境

链接

选项用途
/F设置堆栈尺寸
/LD创建动态链接库
/LDd创建一个调试动态链接库
/link传输指定的参数给link
/LN创建一个MSIL模型
/MD编译创建一个多线程 DLL,使用msvcrt.lib
/MDd编译创建一个调试多线程 DLL,使用msvcrtd.lib
/MT编译创建一个多线程执行程序,使用libcmt.lib
/MTd编译场景一个调试多线程执行程序,使用libcmtd.lib

预编译头

选项用途
/Y-在当前建造中忽略其他全部预处理头编译选项
/Yc创建一个预编译头文件
/Yd在全部的object文件中放置完整的调试信息
/Yu在编译期间使用预编译头文件

杂项

选项用途
/?列出编译选项
@指定一个响应文件
/analyze打开代码分析
/bigobjIncreases the number of addressable sections in an .obj file.
/c编译但不链接
/cgthreads给cl.exe指定一个线程数用来优化在建造过程中的性能
/errorReport打开在vc++终端中提供内部编译错误信息(ICE)
/FC显示传递给cl.exe的源代码的完整路径到一个文件中
/FS强制写入一个程序数据库文件(PDB)
/H现在扩展名的长度
/HELP列出编译选项
/J改变默认char类型
/kernel编译器和链接器将创建一个可以在windows内核中执行的执行程序
/MP同时建造多源代码文件
/nologo禁止显示启动版权标志
/sdl打开一些附加的安全功能和警告
/showIncludes在编译期间显示全部include文件的列表
/Tc/TC指定C源代码
/Tp/TP指定C++源代码
/V版本信息
/Wall打开全部警告,包括默认关闭的警告
/W警告级别
/w关闭全部警告
/WL打开在用命令行编译C++源代码时使用一行显示错误和警告信息
/Wp64侦测可能的64-bit问题
/Yd在对象文件中放置完整的调试信息
/Yl当创建一个调试库时植入PCH引用
/Zm指定一个预编译头分配限制

详细的参数细节

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

要使用 Microsoft Visual C++ (MSVC) 编译 Qt 源代码,需要遵循一系列步骤来配置开发环境、获取源代码并执行编译过程。以下是一个详细的指南: ### 准备工作 1. **安装 Visual Studio**:确保你已经安装了支持你想要编译的 Qt 版本的 Visual Studio。例如,如果你要编译 Qt 5 或 Qt 6,推荐使用 Visual Studio 2019 或更新版本。 2. **安装 Windows SDK**:根据你的需求安装相应的 Windows Software Development Kit (SDK)。 3. **获取 Qt 源代码**:你可以从 Qt 官方网站下载 Qt 的源代码包,或者通过 Git 克隆官方仓库。 4. **安装 Perl 和 Python**:某些版本的 Qt 在编译过程中可能需要 Perl 和 Python 脚本支持。确保这些工具已安装并在系统路径中可用。 5. **设置环境变量**:确保你的环境变量正确设置了 Visual Studio 的编译工具链,包括 `cl.exe`、`link.exe` 等。 ### 编译 Qt 源代码 1. **解压源代码**:如果下载的是压缩包形式的源代码,将其解压到一个合适的目录。 2. **打开命令提示符**:运行 Visual Studio 提供的命令提示符工具,这会自动设置好编译器所需的环境变量。 3. **配置编译选项**:进入 Qt 源代码目录,运行 `configure` 脚本来指定编译选项。例如: ```bash cd path\to\qt-source configure -platform win32-msvc ``` 这里的 `-platform` 参数指定了目标平台和编译器。对于不同的 Visual Studio 版本,可能需要调整平台参数,如 `win32-msvc2019`。 4. **开始编译**:使用 `nmake` 或 `jom` 工具进行编译。`jom` 是一个多线程构建工具,可以利用多核处理器加快编译速度。假设你有多个 CPU 核心,可以这样启动编译: ```bash jom ``` 5. **安装编译结果**:编译完成后,使用以下命令安装 Qt 库到指定目录: ```bash nmake install ``` ### 集成到 Visual Studio 1. **安装 Qt Visual Studio Add-in**:这个插件可以帮助你在 Visual Studio 中更方便地管理和使用 Qt 项目。 2. **添加 Qt 版本**:打开 Visual Studio,通过菜单 `Qt > Qt Options > Qt Versions > Add` 来集成刚刚编译好的 Qt 版本。 ### 示例代码 以下是一个简单的 Qt 应用程序示例,用于验证编译是否成功: ```cpp #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Hello, Qt!"); label.show(); return app.exec(); } ``` ### 相关问题 1. 如何在 Windows 上安装和配置 Perl 和 Python 环境? 2. 如何使用 CMake 来构建一个使用 Qt 的项目? 3. 如何解决在编译 Qt 时遇到的常见错误? 4. 如何在 Visual Studio 中创建一个新的 Qt 项目? 5. 如何使用 Qt Charts 模块? 希望以上信息能帮助你顺利完成 Qt 源代码的编译工作。如果有任何具体问题,欢迎随时提问!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值