- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有兴趣试用 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/
我是一名优秀的程序员,十分优秀!