Я пытаюсь создать пакет, который использует CMake для системы здания (то есть libebur128), которая полагается на pkg-config
, чтобы найти необходимые пакеты в системе.Как CMake использует pkg-config для поиска пакетов?
После создания необходимых библиотек я обнаружил, что CMake может найти один из них, но не другие, хотя они были построены таким же образом.
Как я могу узнать, что не так? Есть ли способ вывести тесты, которые он делает, или что-то о том, как он использует pkg-config
для поиска пакетов? Потому что вручную с помощью pkg-config
работает каждый раз при поиске всех необходимых пакетов.
Вот один из сценариев CMake, чтобы найти что-то, libmpg123 в этом случае:
find_package(PkgConfig)
pkg_check_modules(PC_MPG123 QUIET libmpg123)
find_path(MPG123_INCLUDE_DIR mpg123.h
HINTS ${PC_MPG123_INCLUDEDIR} ${PC_MPG123_INCLUDE_DIRS})
find_library(MPG123_LIBRARY NAMES mpg123 mpg123-0
HINTS ${PC_MPG123_LIBDIR} ${PC_MPG123_LIBRARY_DIRS})
set(MPG123_LIBRARIES ${MPG123_LIBRARY})
set(MPG123_INCLUDE_DIRS ${MPG123_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_LIBRARY MPG123_INCLUDE_DIR)
mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY)
Примечание: Я кросс компиляции для Windows, в случае, если имеет значение, я использую MinGW-w64 набор инструментов и я скорректировал пути pkg-config
, чтобы посмотреть, где это должно быть.
Вы пытались удалить QUIET из pkg_check_modules? Если я не ошибаюсь, это скроет строку «проверка для модулей». Также почему вы используете всю ручную библиотеку для поиска файлов при использовании pkg-config. Мои типичные вещи pkg-config выглядят как 'pkg_check_modules (GLIB REQUIRED glib-2.0> = 2.0.0)' и все. – grim
Ваш код выглядит хорошо для меня. Можете ли вы опубликовать больше кода, включая один случай, когда он не работает? Возможно, у вас есть ошибка копирования и вставки. – usr1234567