LINUX.ORG.RU

Помогите побороть cmake

 ,


0

1

Пытаюсь компильнуть этот проект. Но до компиляции дело пока не дошло. Застрял на этапе cmake.

clang/libclang/llvm и все -dev установлены. Всё равно выдаёт

CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find LibClang (missing: LibClang_LIBRARY LibClang_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  cmake/Modules/FindLibClang.cmake:9 (find_package_handle_standard_args)
  CMakeLists.txt:10 (find_package)

Нашел в этом же проекте иссшку, но как я не играюсь с путями, всё одно.

Доп. инфо: debian jessie, все пакеты из репозитория.

$ llvm-config --includedir
/usr/lib/llvm-3.0/include
$ llvm-config --libdir
/usr/lib/llvm-3.0/lib

★★

Ну если ты уверен, что всё как надо, попробуй просто установить (set) эти переменные (LibClang_LIBRARY LibClang_INCLUDE_DIR) на нужный путь, а FIND_PACKAGE убрать

HNO-Arzt_
()
Ответ на: комментарий от HNO-Arzt_

Вроде прокатило - пару файлов, зависимых от libclang компильнул.

Однако выдал варнинг

WARNING: Target "clic_add" requests linking to directory "/usr/lib/llvm-3.4/lib".  Targets may link only to libraries.  CMake is dropping the item.

И как раз на этой цели всё падает. :(

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

Может там баг, хз. Как я понял, он непосредственно файл библиотеки хочет, а не путь к ней. Посмотри, к чему эта цель линкуется (команды не помню, увы) и в этой переменной поставь нужное значение

HNO-Arzt_
()
Ответ на: комментарий от ziemin
target_link_libraries(clic_add
    common
    ${Boost_LIBRARIES}
    ${ZLIB_LIBRARIES}
    ${DB_LIBRARIES}
    ${LibClang_LIBRARIES}
)

Да, тогда в LibClang_LIBRARIES впиши путь до библиотеки (с .so файлом на конце, а не просто /usr/lib какой-нибудь)

HNO-Arzt_
()

FindLibClang.cmake просто не знает, где искать. У меня на генте includedir стандартная, а libdir — нет:

$ llvm-config --includedir
/usr/include

$ llvm-config --libdir
/usr/lib64/llvm

Соответственно, cmake ругается только на LibClang_LIBRARY

Вот тут есть модуль, который ищет либу более адекватно:

find_program(
    LLVM_CONFIG_EXECUTABLE
    llvm-config
  )
if (LLVM_CONFIG_EXECUTABLE)
    message(STATUS "Found LLVM configuration tool: ${LLVM_CONFIG_EXECUTABLE}")

    # Get LLVM library dir
    execute_process(
        COMMAND ${LLVM_CONFIG_EXECUTABLE} --libdir
        OUTPUT_VARIABLE LLVM_LIBDIR
        OUTPUT_STRIP_TRAILING_WHITESPACE
      )
endif()

# Try to find libclang.so
find_library(
    LIBCLANG_LIBRARY
    clang
    PATH ${LLVM_LIBDIR}
  )

Примерно так же можно найти и include path, только в find_path не надо добавлять PATH перед переменной с директорией

BlackHawk
()
Ответ на: комментарий от HNO-Arzt_

Тот же libclang через pkg-config у меня не ищется. Про GMP он тоже ничего не знает, например

BlackHawk
()
Ответ на: комментарий от HNO-Arzt_

pkg-config - мразь, которой не должно быть. С локально установленными библиотеками оно не работает.

На винде и прочих неюниксовых платформах тоже не прокатит (а cmake должен уметь работать везде одинаково).

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