MSVC编译参数

来源:互联网 发布:tensorflow java 编辑:程序博客网 时间:2024/05/16 05:56

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_transcendentals Generates 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 参数浏览文件

预处理

选项 用途 /AI Specifies a directory to search to resolve file references passed to the #using directive. /C Preserves comments during preprocessing. /D 定预处理宏 /E 复制预处理到标准输出 /EP 复制预处理到标准输出 /FI 预处理指定的include文件 /FU Forces 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类的成员 /vmb Uses best base for pointers to members. /vmg Uses 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 打开代码分析 /bigobj Increases 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 指定一个预编译头分配限制

详细的参数细节

0 0