为什么设置MSVC cl.exe到PATH路径,依然无法正常编译?
MSVC可以正常编译C/C++代码的前提,还包括INCLUDE/LIB路径等都正确配置,而这无法仅仅通过MSVC cl.exe的PATH路径来完成。VS提供了一个官方的配置MSVC环境的方式,可以通过开始菜单的"Developer Command Prompt for VS 2019"进入MSVC环境,这里的cl.exe才能正常编译。
为什么MSVC toolchain有多个cl.exe?
MSVC提供的不仅仅一个host + target的toolchain,根据host架构x86和x64共2种,target架构有x86、x64、arm或arm64四种,总共有8个cl.exe. 例如:
- D:\ProgramFiles\MicrosoftVisualStudio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx86\arm64\cl.exe 32bit x86架构host,编译成arm64架构可执行文件
- D:\ProgramFiles\MicrosoftVisualStudio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe 64bit x64架构host,编译成x64架构可执行文件
Clang也兼容MSVC?
没错,Clang设计目标是GCC & MSVC compatibility,Windows版本的Clang编译器,默认clang.exe是兼容GCC选项,clang-cl.exe是兼容MSVC编译选项。
Clang/GCC/MSVC编译器对比
- 编译选项:Clang 和 GCC在很多编译选项上是相似的,因为 Clang 旨在与 GCC 兼容。MSVC的选项一般以/开头 ,和普通DOS命令选项类似,clang和gcc按照Unix命令选项-或者--开头。
- 跨平台:Clang和GCC是跨平台的,可以在多种操作系统上使用,包括Linux、macOS和Windows等。MSVC只用于Windows平台。Clang和GCC兼容性很好,Makefile移植心智负担小,到Windows平台就需要注意选项差异。
- 语言标准支持:MSVC较新版本才对C99有较完整支持,对C11/C17支持不是很好,VS2022默认依然主要是C90(额外附带一些C99 feature和MSVC特性). Clang和GCC支持就更好一些,最新版本支持更新的C标准。MSVC对C++标准支持比Clang和GCC都快,对C++20支持更好。
- 错误提示:Clang在错误信息和警告方面做得很好,能够提供更清晰、更精确的错误提示。
- 支持语言:GCC支持的语言最多,因为它已经变成前端了,除了C/C++/Obj C/C++语言,Fortran、Ada等都在支持之列,早期也支持Java,后来逐渐Phase out.
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
标签:GCC,exe,cl,C++,Clang,MSVC From: https://blog.csdn.net/cxsjabcabc/article/details/145091105