Найти заголовочные файлы 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() не ищет рекурсивно. Как сделать это лучше?

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

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

Спасибо!

2 ответа

Решение

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

Посмотрите, как это реализовано в проекте LLVM. Ищи if( LLVM_ENABLE_FFI ) линия.

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