Win10系统之家 - 专注分享最好用的电脑系统

当前位置: Win10系统之家 >  系统教程 >  系统安装教程 >  windows clang怎么使用

windows clang怎么使用 如何使用windows clang

更新时间:2023-10-18 15:02:45作者:jzjob

       近年来,Clang在开发者社区中越来越受欢迎,因为它提供了强大的性能和优化能力,同时还具备良好的可读性和可维护性。微软为了让更多开发者能够享受到Clang的优点,决定将Clang带入Windows平台,于是我们就有了Windows Clang。然而,对于很多开发者来说,如何安装和使用Windows Clang可能是一个难题。本文将为您提供详细的教程,让我们一起来了解一下吧!

        具体方法:

一、下载llvm的windows版本

https://github.com/llvm/llvm-project/tags

选择对应版本的windows版本

例如

windows clang怎么使用_如何使用windows clang

二、clang的使用

在windows下clang指令只是负责编译的前端工作,即识别编译指令,与提供报错提示。并不负责具体的代码编译工作,所以在windows下光安装llvm是不够的,还需要有实际的编译链接库,例如安装MinGW或者MSVC来获取需要的运行库

注意:

使用前请将clang.exe所在的目录添加到环境变量PATH中,一般clang.exe在llvm安装目录内的bin目录下

gcc风格的编译指令参数

默认情况下clang的基本编译指令参数与gcc是一样的,所以按照gcc的用法来使用clang即可。也可以显式指定clang的指令风格为gcc风格,需要用到--driver-mode=gcc

示例:

# 默认按gcc风格来给定编译参数
clang -Wall -g3 -o main.exe main.c
clang -Wall -g3 -o main.exe main.cpp
clang++ -Wall -g3 -o main.exe main.cpp

# 显式说明以gcc风格来给定编译参数
clang --driver-mode=gcc -Wall -g3 -o main.exe main.c
clang --driver-mode=gcc -Wall -g3 -o main.exe main.cpp
clang --driver-mode=g++ -Wall -g3 -o main.exe main.cpp

# clang等价于clang --driver-mode=gcc
# clang++等价于clang --driver-mode=g++

注意:

1. 因为clang使用的默认工具链是msvc,所以这里编译cpp、c时,不需要区分是使用clang还是clang++,但是-o后面如果不指定是.exe后缀文件,编译出来的可执行文件不会自动添加.exe后缀

2. 如果用target参数指定使用MinGW工具链,编译cpp、c时,必须区分是clang还是clang++,但是-o后面指定的文件不用特意加上.exe后缀,会自动生成.exe后缀的可执行文件

msvc风格的编译指令参数

要用msvc风格的编译参数,需要使用--driver-mode=cl 参数,或者使用clang-cl指令

# 按msvc风格来给定编译参数
clang --driver-mode=cl /W3 /Zi /EHsc /MDd /Fe:main.exe main.c

# 按msvc风格来给定编译参数
clang-cl /W3 /Zi /EHsc /MDd /Fe:main.exe main.c

# clang-cl等价于clang --driver-mode=cl

指定使用MinGW还是使用MSVC

在windows10上,clang不管是gcc风格还是msvc风格。默认情况下clang都是使用MSVC提供的工具链来进行具体编译的,可以使用-v参数来查看clang默认的Target

示例:

windows下64位clang一般默认是x86_x64-pc-windows-msvc

windows下32位clang一般默认是i686-pc-windows-msvc

MinGW-32对应clang中的target是i686-pc-windows-gnu

MinGW-64对应clang中的target是x86_64-pc-windows-gnu

指定Target的方法

# 默认gcc风格时,可以是如下两种形式
clang -target i686-pc-windows-msvc
clang --target=i686-pc-windows-msvc

# 如果使用了clang-cl或者指定--driver-mode=cl,则只能使用下面形式
clang-cl --target=i686-pc-windows-msvc
clang --driver-mode=cl --target=i686-pc-windows-msvc

注意:

使用MinGW工具链时,编译c、cpp时一定要区分clang和clang++。或者显式地指定--driver-mode=g++来编译cpp程序

指定生成32位程序还是64位程序

# 指定使用msvc编译32位程序,如果是32位clang,则无需特别指定target
clang --target=i686-pc-windows-msvc -Wall -g3 -o main.exe main.c
clang --target=i686-pc-windows-msvc -Wall -g3 -o main.exe main.cpp
# gcc风格时,还可以直接使用-m32来指定32位程序
clang -m32 -Wall -g3 -o main.exe main.c
clang -m32 -Wall -g3 -o main.exe main.cpp
# cl风格则只能通过设置target来指定32位程序
clang-cl --target=i686-pc-windows-msvc /W3 /Zi /Fe:main.exe main.c
clang-cl --target=i686-pc-windows-msvc /W3 /Zi /Fe:main.exe main.cpp

# 使用msvc编译64位程序,64位clang无需特别指定target
clang -target x86_64-pc-windows-msvc -Wall -g3 -o main.exe main.c
clang -target x86_64-pc-windows-msvc -Wall -g3 -o main.exe main.cpp
# gcc风格时,还可以直接使用-m64来指定64位程序
clang -m64 -Wall -g3 -o main.exe main.c
# cl风格则只能通过设置target来指定64位程序
clang-cl --target=x86_64-pc-windows-msvc /W3 /Zi /Fe:main.exe main.c
clang-cl --target=x86_64-pc-windows-msvc /W3 /Zi /Fe:main.exe main.cpp

# 使用MinGW-GCC来编译
# 生成32位程序
clang -target i686-pc-windows-gnu -Wall -g3 -o main main.c
clang++ -target i686-pc-windows-gnu -Wall -g3 -o main main.cpp
# 生成64位程序
clang -target x86_64-pc-windows-gnu -Wall -g3 -o main main.c
clang++ -target x86_64-pc-windows-gnu -Wall -g3 -o main main.cpp

注意:

clang选择使用MinGW编译32位或64位程序的前提是,已经安装了32位和64位版本的MinGW,并且两个版本都要在环境变量PATH中,并且64位版本要在32位版本前面(否则会编译报错,具体原因不知道)

 

以上就是关于windows clang怎么使用的全部内容,有出现相同情况的用户就可以按照小编的方法了来解决了。