Как указать путь pkg-config при компиляции чего-либо с помощью cmake?

Вопрос или проблема

Я хочу собрать ffmpeg с поддержкой кодека av1 на CentOS 7.
Я начинаю, следуя инструкциям здесь:

git clone https://aomedia.googlesource.com/aom
mkdir aom_build
cd aom_build
cmake ../aom
make
sudo make install

Это записывает файл в /usr/local/lib64/pkgconfig/aom.pc.
Когда я позже клонирую репозиторий ffmpeg и пытаюсь запустить ./configure --enable-libaom ..., он жалуется, что pkg-config не может найти файл aom.pc.

Это связано с тем, что если я запущу pkg-config --variable pc_path pkg-config, я вижу, что pkg-config проверяет только здесь:

/usr/lib64/pkgconfig:/usr/share/pkgconfig

Он не ищет в /usr/local/lib64/pkgconfig, где находится aom.pc. Пожалуй, единственное решение, которое я придумал, это запустить вместо этого в каталоге git ffmpeg:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH/usr/local/lib64/pkgconfig: ./configure --enable-libaom ...

Это работает, но я бы предпочел просто сказать libaom, чтобы он записывал aom.pc в /usr/lib64/pkgconfig с самого начала.

Есть ли какой-либо способ, при сборке aom, указать cmake или make записать файл aom.pc в /usr/lib64/pkgconfig вместо /usr/local/lib64/pkgconfig?

В других проектах, где есть шаг ./configure, я видел, что это можно указать с помощью ./configure --pkgconfigdir=/usr/lib64/pkgconfig, но в проекте aom нет скрипта ./configure, поэтому я не знаю, что делать в этом случае.

Вы бы хотели запустить пользовательский cmake для libaom что-то вроде этого:

cmake .. -DCMAKE_INSTALL_PREFIX="./extra_ff_mods" -DCMAKE_INSTALL_LIBDIR=lib
make
make install

Это поместит файлы в папку с названием extra_ff_mods, которая будет содержать следующие подпапки:

- include
|
- lib
  |
   - pkgconfig

Вы можете изменить папку назначения по мере необходимости.

Ответ или решение

Чтобы указать путь для pkg-config при компиляции с использованием CMake, нужно учитывать несколько параметров, связанных с настройкой пути установки файлов конфигурации pkg-config, в частности, при сборке библиотеки aom для поддержки кодека AV1 на CentOS 7. Давайте рассмотрим процесс пошагово.

Шаг 1: Клонирование и сборка aom

Сначала вы клонируете репозиторий и создаете каталог для сборки:

git clone https://aomedia.googlesource.com/aom
mkdir aom_build
cd aom_build

Шаг 2: Настройка CMake

Когда вы запускаете cmake для сборки библиотеки, вам нужно указать, где должны устанавливаться файлы конфигурации pkg-config, такие как aom.pc. Это можно сделать с помощью параметра CMAKE_INSTALL_PREFIX.

Вы можете указать путь, в котором будут установлены все файлы (в том числе и файлы .pc), с помощью следующей команды:

cmake ../aom -DCMAKE_INSTALL_PREFIX=/usr/lib64

Шаг 3: Сборка и установка

После того как CMake настроен, выполните сборку и установку:

make
sudo make install

Это создаст необходимые файлы в /usr/lib64/pkgconfig, который является путём, проверяемым pkg-config по умолчанию.

Шаг 4: Проверка установки

Проверьте, находится ли файл aom.pc в нужной директории:

ls /usr/lib64/pkgconfig/aom.pc

Если файл существует, вы готовы продолжить и выполнить конфигурацию ffmpeg.

Альтернативный метод: Установка в пользовательский каталог

Если вы не хотите или не можете установить библиотеку в /usr/lib64, вы можете добавить путь aom.pc к переменной PKG_CONFIG_PATH, как вы уже делали:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig ./configure --enable-libaom ...

Однако, такой подход менее предпочтителен, так как может привести к путанице и усложнениям при управлении пакетами.

Подводя итоги

В заключение, чтобы правильно указать путь для pkg-config при использовании CMake, рекомендуется использовать опцию -DCMAKE_INSTALL_PREFIX с указанием желаемого пути. Это обеспечит корректное размещение файлов конфигурации и упростит дальнейшую работу с проектами, зависящими от вашей библиотеки.

Оцените материал
Добавить комментарий

Капча загружается...