2012-09-05 2 views
0

J'ai besoin de libffi pour construire mon projet C++. Le problème est qu'il n'existe aucun script premade pour trouver libffi et ffi.h est situé à des emplacements étranges en fonction de la version de la bibliothèque et de la distribution Linux.Trouver des fichiers d'en-tête libffi avec CMake

Le est ma tentative:

# 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) 

Mais il ne fonctionne évidemment pas parce que find_path() ne recherche pas récursivement. Comment le faire mieux?

J'ai essayé d'utiliser le module pkg-config de CMake, mais pkg-config ne le trouve pas non plus.

[Ethon @ Papier Fleckstation] $ pkg-config --cflags libffi Package libffi n'a pas été trouvé dans le chemin de recherche pkg-config. Peut-être que vous devez ajouter le répertoire contenant `libffi.pc » à la PKG_CONFIG_PATH variable d'environnement Aucun package 'libffi' trouvé

Merci!

Répondre

1

Je suis l'auteur de libffi. pkg-config devrait le trouver. Sur quel système travaillez-vous? Avez-vous un fichier libffi.pc n'importe où sur votre système?

0

Regardez comment il est implémenté dans LLVM project. Recherchez if(LLVM_ENABLE_FFI) ligne.

Questions connexes