LINUX.ORG.RU

Cmake YouCompleteMe не уважает параметры сборки

 , , , ,


0

3

Всем доброго дня. Пытаюсь завести автодополнение в виме, делаю по инструкции отсюда. Скомпилировал llvm и clang версии 4.0 по мануалу командой

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/home/boris/ycm_build/llvm_build -DCMAKE_BUILD_TYPE=Release /home/boris/ycm_build/llvm_sources/llvm/

Успех, в директории /home/boris/ycm_build/llvm_build/lib появились нужные мне libclang.so.4.0 и libclang.so (симлинк на неё). Теперь мне нужно скормить эту библиотеку youcompleteme:

cmake -G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=/home/boris/ycm_build/llvm_build/lib/libclang.so.4.0 . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake --build . --target ycm_core --config Release

Но он упорно подключает системную библиотеку:

Your C++ compiler supports C++11, compiling in that mode.
Using libclang to provide semantic completion for C/C++/ObjC
Using external libclang: /usr/lib/i386-linux-gnu/libclang-3.5.so.1
-- Configuring done
-- Generating done
-- Build files have been written to: /home/boris/ycm_build

После сборки и запуска вима youcompleteme, понятно, ругается на устаревшую библиотеку. Объясните, пожалуйста, что я делаю не так)

потому как не рекомендуется собирать с системным бустом и шлангом из-за этого вилазят глюки

но можешь стрельнуть себе в ногу, как-то так:

#!/bin/sh

cd /tmp
mkdir -p ycm_build
cd ycm_build

cmake -G "Unix Makefiles" \
-DCMAKE_LIBRARY_ARCHITECTURE="x86_64-linux-gnu" \
-DPYTHONLIBS_VERSION_STRING='3.4' \
-DPYTHON_LIBRARY='/usr/lib/libpython3.4m.so' \
-DUSE_PYTHON2=OFF \
-DUSE_SYSTEM_BOOST=ON \
-DBOOST_LIBRARYDIR=/usr/include/boost \
-DBOOST_ROOT=/usr/lib \
-DBoost_PYTHON3_LIBRARY_RELEASE=/usr/lib64/libboost_python-3.4.so \
-DUSE_SYSTEM_LIBCLANG=ON \
. ~/.config/nvim/plugged/YouCompleteMe/third_party/ycmd/cpp \
&& cmake --build . --target ycm_core --config Release

но лучше не париться и делать как они говорят

anTaRes ★★★★ ()
Ответ на: комментарий от anTaRes

Так я же скомпилировал сам llvm, как они говорят. Проблема в том, что я почему-то не могу приказать эту скомпилированную библиотеку подключить.

borgch ()

А чем вас не устроил дефольтный вариант?

$ cd /path/to/ycm/
$ ./install.py --clang-completer

andreyu ★★★★★ ()
Ответ на: комментарий от DELIRIUM

мне пофик чтойто, я накопипастил параметров с инструкции
а что там на самом деле должно быть - мне по барабану, эту команду нужно один раз выполнить, а не дрочить на нее

anTaRes ★★★★ ()

Всё очень просто, нужно выкинуть гавёху и использовать deoplete.

anonymous ()
Ответ на: комментарий от anTaRes

Ну если один раз, то да, те, кто несколько раз в день её выполняют, используют -G Ninja.

DELIRIUM ★★★★★ ()
Ответ на: комментарий от andreyu

Это работает на 32-битной системе? Этот скрипт же скачивает pre-built clang, которого для x86 на llvm.org нету; поэтому мне этот вариант не подошёл.

borgch ()

Попробуй указывать путь к директории, в которой лежит библиотека, а не к самой библиотеке.

anonymous ()
Ответ на: комментарий от borgch

Это работает на 32-битной системе?

Хз, я давно не видел 32-битной десктопной системы.

andreyu ★★★★★ ()

Всем спасибо. В итоге прошла команда (в документации про необходимость этого флага не сказано)

cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=off -DEXTERNAL_LIBCLANG_PATH=/home/boris/ycm_build/llvm_build/lib/libclang.so.40 . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake --build . --target ycm_core --config Release

А с 32 бит на 64, видимо, тоже буду мигрировать) Знакомый несколько лет назад посоветовал ставить 32 битный Linux Mint, с тех пор всё работает и лень менять.

borgch ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.