1

我有兴趣尝试 clang,因为它具有静态分析功能。我目前正在使用 c++ 开发一个项目,在 ubuntu 11.04 上运行。clang 的一个问题是它不能与 libstdc++ 4.4 一起使用,除非我对其进行修补。我不想因为可能暂时涉足铿锵声而与 libstdc++ 源代码混为一谈。

另一种方法是使用 libc++ 而不是 libstdc++。不幸的是,我无法在网上找到有关使用 CMake 的替代 STL 实现的帮助。

我在我的 CMakeLists.txt 文件中写什么来告诉 CMake 使用 libc++?

4

1 回答 1

1

一般来说,您必须从包含路径中删除 std 包含并停止 clang 与 stdlib 链接,然后您手动将其他库包含为 CMake 库,然后您还添加包含路径。

你有安装 libc++ 吗?根据libcxx 主页libcxx 目前在 linux 上不受官方支持。

clang 与 gcc 广泛兼容,因此您应该能够通过clang -nostdlib -nostdinc

但是,您不一定需要构建自己的 libc。您还可以从源(主干)构建编译器,它很可能支持 libstdc++。(我刚刚让它在 Fedora15 上运行)。

clang的入门页面是一个很好的资源!

BLD=$(pwd)/llvm
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../.. # back to where you started
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../.. # back to where you started
mkdir build # for building without polluting the source dir
cd build
../llvm/configure --enable-optimize --disable-assertions --prefix /usr/local
make -j8 # adjust to the number of cores or cores times 2

然后,clang 二进制文件驻留在${BLD}/Release/bin/. 如果你决定做 amake install他们应该被复制到/usr/local/bin/. 因此,您可以将以下参数传递给 CMake:

cd your_source_dir_here 
mkdir build
cd build
cmake .. -DCMAKE_CXX_COMPILER=${BLD}/Release/bin/clang++ -DCMAKE_C_COMPILER=${BLD}/Release/bin/clang
于 2011-12-26T22:14:41.690 回答