cl.exe(Compile and Link.exe) 是一个控制 Microsoft C++ (MSVC) C 和 C++ 编译器和链接器的工具。 cl.exe 只能在支持 Microsoft Visual Studio for Windows 的操作系统上运行。
编译器生成通用对象文件格式 (COFF) 对象 (.obj) 文件。 链接器生成可执行文件 (.exe) 文件或动态链接库 (DLL)。
所有编译器选项均区分大小写。 可以使用正斜杠 (/
) 或短划线 (-
) 指定编译器选项。
若要在不链接的情况下进行编译,请使用 /c 选项。
备注:
只能从 Visual Studio 开发人员命令提示启动此工具。 不能从系统命令提示符或从文件资源管理器启动此工具。 有关详细信息,请参阅通过命令行使用 MSVC 工具集。
在 Visual Studio 中安装 C 和 C++ 支持 | Microsoft Learn
cl.exe是MSVC的一部分,安装完之后,你可以在MSVC的bin目录下的子目录找到它。
一共四个版本,Hostx64-x64,Hostx64-x86,Hostx86-x64,Hostx86-x86,下图是其中一个:
如果你安装了VS Code和CMake Tools插件,也可以查到到对应4个版本的MSCV的cl.exe编译器,如下图所示:
X64\X86\X86-64的区别
x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为“IA-32”
x86_64是x86 CPU开始迈向64位的时候,有2选择:1、向下兼容x86。2、完全重新设计指令集,不兼容x86。AMD抢跑了,比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64,抢了64位PC的第一桶金,得到了用户的认同。而Intel选择了设计一种不兼容x86的全新64为指令集,称之为IA-64(这玩意似乎就是安腾),但是比amd晚了一步,而且IA-64也挺惨淡的,因为是全新设计的CPU,没有编译器,也不支持windows(微软把intel给忽悠了,承诺了会出安腾版windows server版,但是迟迟拿不出东西)。。。后来不得不在时机落后的情况下也开始支持AMD64的指令集,但是换了个名字,叫x86_64,表示是x86指令集的64扩展,大概是不愿意承认这玩意是AMD设计出来的。
也就是说实际上,x86_64,x64,AMD64基本上是同一个东西,我们现在用的intel/amd的桌面级CPU基本上都是x86_64。
通过我的电脑属性查看你当前机器使用的CPU类型:
我笔记本使用的是Intel 64位的CPU,因此我这里会使用bin的.\Hostx86\x64\子目录下的cl.exe。
因此把该目录添加到系统变量“Path”中:
打开一个新的命令行窗口,输入“cl”按回车,就可以显示当前cl.exe对应的版本: