Найти заголовочные файлы 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 )
линия.