Найдите файлы заголовков libffi с помощью CMake

Мне требуется libffi для сборки моего проекта C++. Проблема в том, что не существует готового скрипта для поиска libffi, а ffi.h находится в странных местах в зависимости от версии библиотеки и дистрибутива Linux.

Это моя попытка:

# Look for the header file.
Find_Path(LIBFFI_INCLUDE_DIR NAMES ffi.h)
Mark_As_Advanced(LIBFFI_INCLUDE_DIR)

# Look for the library.
Find_Library(LIBFFI_LIBRARY NAMES
    ffi
)
Mark_As_Advanced(LIBFFI_LIBRARY)

# handle the QUIETLY and REQUIRED arguments and set LIBFFI_FOUND to TRUE
# if all listed variables are TRUE
Include(FindPackageHandleStandardArgs)
Find_Package_Handle_Standard_Args(libffi DEFAULT_MSG
    LIBFFI_LIBRARY LIBFFI_INCLUDE_DIR)

If(LIBFFI_FOUND)
  SET(LIBFFI_LIBRARIES ${LIBFFI_LIBRARY})
  SET(LIBFFI_INCLUDE_DIRS ${LIBFFI_INCLUDE_DIR})
Endif(LIBFFI_FOUND)

Но это явно не работает, потому что Find_Path() не выполняет рекурсивный поиск. Как это сделать лучше?

Я пытался использовать модуль pkg-config CMake, но pkg-config тоже не может его найти.

[ethon@Fleckstation Paper]$ pkg-config --cflags libffi Пакет libffi не найден в пути поиска pkg-config. Возможно, вам следует добавить каталог, содержащий `libffi.pc', в переменную окружения PKG_CONFIG_PATH. Пакет 'libffi' не найден

Спасибо!


person Ethon    schedule 05.09.2012    source источник


Ответы (2)


Я автор libffi. pkg-config должен его найти. На какой системе вы работаете? У вас есть файл libffi.pc где-нибудь в вашей системе?

person Anthony Green    schedule 05.09.2012

Посмотрите, как это реализовано в LLVM. проект. Найдите if( LLVM_ENABLE_FFI ) строку.

person arrowd    schedule 05.09.2012