Table of Contents

Cl编译器

参考位置:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64


cl的编译选项:编译选项使用正斜杠指定,大小写敏感

[]里面是自己填的内容

编译选项 作用
/c 编译但不链接
/D[xxx] 定义常数和宏
/E 将预处理器输出复制到标准输出
/F[bytes] 设置堆栈大小
/Fd[pathname] 重命名程序数据库文件
/Fe[pathname] 重命名可执行文件
/MD 使用MSVCRT.lib编译以创建多线程DLL
/MDd 使用MSVCRTD.lib编译以创建调试多线程DLL
/MT 使用LIBCMT.lib编译以创建多线程可执行文件
/MTd 使用LIBCMTD.lib编译以创建调试多线程可执行文件
/LD 创建动态链接库
/LDd 创建调试动态链接库
/O1 优化等级
/O2 优化等级
/Od 禁用优化
/Os 代码大小优先
/Ot 代码速度优先
/std:c++14 C++标准
/std:c++17 C++标准
/std:c++20 C++标准
/std:c++latest C++标准
/std:c11 C标准
/std:c17 C标准
/U[xxx] 移除预定义宏
/u 移除所有的预定义宏
/utf-8 将源和执行字符集设置为UTF-8
/w 禁用所有警告
/W0, /W1, /W2, /W3, /W4 设置输出警告等级
/Wall 启用所有警告
/wd[xxx] 禁用指定的警告

在VS中查看编译命令

打开Project的Property页面,可以看到提供给编译器的参数

MD/MT的含义和区别

官方文档:https://learn.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170

Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the run-time library.
All modules passed to a given invocation of the linker must have been compiled with the same run-time library compiler option (/MD, /MT, /LD).