1

静的分析機能のために、clangを試してみることに興味があります。私は現在、ubuntu11.04で実行されているc++のプロジェクトに取り組んでいます。clangの問題の1つは、パッチを適用しない限り、libstdc++4.4では機能しないことです。clangへの一時的な侵入となる可能性があるため、libstdc++ソースをいじりたくありません。

別の方法は、libstdc++の代わりにlibc++を使用することです。残念ながら、CMakeの代替STL実装を使用するためのヘルプをオンラインで見つけることができませんでした。

CMakeにlibc++を使用するように指示するには、CMakeLists.txtファイルに何を書き込みますか?

4

1 に答える 1

1

一般的に言えば、インクルードパスからstd includeを削除し、clangがstdlibとリンクしないようにする必要があります。次に、他のライブラリをCMakeライブラリとして手動でインクルードし、インクルードパスも追加します。

libc ++をインストールしていますか?libcxxのホームページによると、 libcxxは現在Linuxで公式にサポートされていません。

clangはgccと広く引数互換性があるため、渡すことができるはずですclang -nostdlib -nostdinc

ただし、必ずしも独自のlibcを作成する必要はありません。ソース(トランク)からコンパイラをビルドすることもでき、libstdc++をサポートする可能性があります。(Fedora15で動作するようになりました)。

clangのGettingStartedページは良いリソースです!

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
于 2011-12-26T22:14:41.690 に答える