gpt4 book ai didi

ubuntu - 如何在 CMake 中设置 STL 实现?

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:48 25 4
gpt4 key购买 nike

我有兴趣试用 clang,因为它具有静态分析功能。我目前正在用 c++ 开发一个项目,在 ubuntu 11.04 上运行。 clang 的一个问题是它不能与 libstdc++ 4.4 unless I patch it 一起工作。 .我不想弄乱 libstdc++ 源代码,因为它可能是对 clang 的临时尝试。

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

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

最佳答案

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

你有安装libc++吗?根据libcxx homepage libcxx 目前在 Linux 上未得到正式支持。

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

然而,您不一定需要构建自己的 libc。您还可以从源代码 (trunk) 构建编译器,它很可能会支持 libstdc++。 (我刚刚在 Fedora15 上运行它)。

Getting Started 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/ 中。如果您决定执行 make 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

关于ubuntu - 如何在 CMake 中设置 STL 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com