Как я могу установить реализацию STL в CMake? - PullRequest
1 голос
/ 27 декабря 2011

Я заинтересован в том, чтобы попробовать Clang для его статического анализа.В настоящее время я работаю над проектом на C ++, работающем на Ubuntu 11.04.Одна из проблем clang заключается в том, что он не может работать с libstdc ++ 4.4 , если я не исправлю его .Я не хочу связываться с источником libstdc ++ для того, что может быть временным набегом в clang.

Альтернатива - использовать libc ++ вместо libstdc ++.К сожалению, я не смог найти справку в Интернете по использованию альтернативных реализаций STL от CMake.

Что мне написать в моем файле CMakeLists.txt, чтобы сообщить CMake об использовании libc ++?

1 Ответ

1 голос
/ 27 декабря 2011

Вообще говоря, вы должны удалить std include из вашего пути включения и остановить clang от связи с stdlib, затем вручную включить другие библиотеки в качестве библиотек CMake и затем также добавить путь включения.

У вас установлен libc ++?Согласно домашней странице libcxx libcxx в настоящее время официально не поддерживается в linux.

clang широко аргументированно совместим с gcc, поэтому вы должны иметь возможность передавать clang -nostdlib -nostdinc

Однако вам не обязательно создавать свой собственный libc.Вы также можете собрать компилятор из исходников (trunk), и он, скорее всего, будет поддерживать 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
...