2011-12-26 16 views
1

私はその静的解析機能のために、打ち鳴らすを試しに興味があります。私は現在、Ubuntu 11.04で動作するC++のプロジェクトに取り組んでいます。 clangの1つの問題は、libstdC++ 4.4 unless I patch itで動作しないことです。私は、clangへの一時的な参加の可能性についてlibstdC++のソースを混乱させたくありません。CMakeでSTL実装を設定するにはどうしたらいいですか?

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

は私にlibC++を使用するようにCMakeのを伝えるために私のCMakeLists.txtファイルに何を書きますか?一般的に、あなたがSTDを削除する必要が話す

答えて

1

は、あなた、あなたは手動でCMakeのライブラリなど他のライブラリが含まれ、その後、あなたはまた、パスを追加し、パスを含めるとSTDLIBとリンクから打ち鳴らすの停止から含まれています。

はあなたのlibC++がインストールされていますか?現在libcxx homepage libcxxによると は正式にLinux上でサポートされていません。

打ち鳴らすは、このようにあなたは、必ずしもあなた自身のlibcを構築する必要はありません。しかしclang -nostdlib -nostdinc

を渡すことができるはず広く、GCCとの互換性が引数です。ソース(トランク)からコンパイラをビルドすることもでき、libstdC++をサポートする可能性が最も高いです。 (私はちょうどそれがFedora15で働いている)。

clangのGetting Startedページがいいリソースです!

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 
+1

おっとり;私はlibC++がlinuxで利用可能であると仮定していました。これを作った人のこのブログ記事を見ています(http://solarianprogrammer.com/2011/10/16/llvm-clang-libc-linux/)。しかし、それが著者によって正式に支持されていない場合、私はもはやスイッチを作りたいとは思っていません。ヘッドアップをありがとう! – SuperElectric

+0

リンク@SuperElectricああありがとう。興味深いですが、Linuxディストリビューションで独自のlibcを動かすことは非常に苦しいことがあります。 – Alex

+1

@SuperElectricあなたはおそらく修正されたlibC++を必要としないので私は私の答えを更新しました – Alex

関連する問題