其他分享
首页 > 其他分享> > 对大型CMake工程采用Clang构建(编译)

对大型CMake工程采用Clang构建(编译)

作者:互联网

gcc vs Clang

An interesting blog
https://www.incredibuild.com/blog/gcc-vs-clang-battle-of-the-behemoths

Ubuntu安装Clang

Official website
https://apt.llvm.org

#For convenience there is an automatic installation script available that installs LLVM for you.
#To install the latest stable version:
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

Cmake工程采用Clang构建需要的修改

在当前bash环境下,根据你所安装的Clang版本和路径

export CC=/usr/bin/clang-15
export CXX=/usr/bin/clang++-15
#export CPP=/usr/bin/clang-cpp-15
#export LD=/usr/bin/ld64.lld-15

后面CPP和LD的两行非必须。

如果编译选项中含有-fopenmp但报错提示找不到omp相关的库或头文件,可以确保在系统安装了openmp的前提下,自己搜索llvm安装路径下openmp的include和lib路径,找到之后手动添加到CMAKE_CXX_FLAGS。比如

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/lib/llvm-10/include/openmp -L/usr/lib/llvm-10/lib/")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/lib/llvm-10/include/openmp -L/usr/lib/llvm-10/lib/")

也有人说链接到gcc目录下的openmp的include和lib路径也可以,但我没有试过。

gcc vs Clang首次构建时间对比

在我实际工作的一个项目中,多次统计的耗时对比是
Clang 4:06s
gcc 12:34s
多次统计时间浮动在几秒钟之内,提速还是比较明显的。

标签:llvm,CMake,lib,Clang,编译,FLAGS,usr,openmp
来源: https://www.cnblogs.com/ZhaoqunZhong/p/16583210.html