Как я могу найти CMake пакет, который был скомпилирован

Прежде всего, я работаю с Centos 7, я пытаюсь скомпилировать последний darktable и преодолел несколько проблем, включая компиляцию gphoto2, exiv2 и т. Д.

Но теперь, когда я пытаюсь собрать darktable, используя основные инструкции здесь: https://github.com/darktable-org/darktable

mkdir build/ cd build/ cmake -DCMAKE_INSTALL_PREFIX=/opt/darktable/ .. make sudo make install

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

Centos7 поставляется с Exiv2 версии 0.23, Darktable требует минимальной версии 0.24

Я удалил exiv2 0.23 с помощью dnf, а затем успешно скомпилировал и установил exiv2 из исходного кода до версии 0.26.

После нескольких попыток я настроил exiv2 с --prefix=/usr, поскольку darktable сказал, что он не может найти библиотеки.

Теперь у меня все та же проблема, и cmake завершает работу со следующей ошибкой:

CMake Error at cmake/modules/FindExiv2.cmake:46 (message): Exiv2 version check failed. Version was found, at least version 0.24 is required Call Stack (most recent call first): src/CMakeLists.txt:292 (find_package) -- Configuring incomplete, errors occurred! See also "/opt/darktable-2.4.1/build/CMakeFiles/CMakeOutput.log". See also "/opt/darktable-2.4.1/build/CMakeFiles/CMakeError.log".

Мои знания о cmake практически ничего не значат, но я вижу, что строка 292 src/CMakeLists.txt ищет пакет, который больше не существует, потому что я удалил его с помощью dnf.

# Require exiv2 >= 0.24 to make sure everything we need is available find_package(Exiv2 0.24 REQUIRED) include_directories(SYSTEM ${Exiv2_INCLUDE_DIRS}) list(APPEND LIBS ${Exiv2_LIBRARIES}) add_definitions(${Exiv2_DEFINITIONS})

Но как я могу заставить cmake искать exiv2, который я собрал и установил? И найти все необходимые библиотеки?

Нашел решение!

Я понял, что в /usr/lib64/pkgconfig /usr/local/lib/pkgconfig и некоторых других было много *.pc файлов.

После моей компиляции и установки Exiv2 он поместил этот exiv2.pc в / usr / lib / pkgconfig /. И это был единственный файл там.

Поэтому я сделал мягкую ссылку в / usr / lib64 / pkgconfig на файл exiv2.pc, и он выполнил свою работу, только что появился еще один список проблем.

1 ответ

Эта строка CMake ищет файлы заголовков в Exiv2_INCLUDE_DIRS и для файла библиотеки Exiv2_LIBRARIES, Попробуйте установить эти переменные в команде CMake:

cmake [...] -DExiv2_INCLUDE_DIRS=/usr/include -DExiv2_LIBRARIES=/usr/lib

(Возможно, последним должен быть сам файл библиотеки, а не его каталог, я не знаю.)

(The [...] должно быть заменено теми аргументами, которые у вас уже были.)

Другие вопросы по тегам