使用 CMake 查找 libffi 头文件

Posted

技术标签:

【中文标题】使用 CMake 查找 libffi 头文件【英文标题】:Find libffi header files with CMake 【发布时间】:2012-08-30 00:17:09 【问题描述】:

我需要 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 论文]$ pkg-config --cflags libffi 包 libffi 在 pkg-config 搜索路径中找不到。也许你应该添加 包含“libffi.pc”的目录到 PKG_CONFIG_PATH 环境变量没有找到包'libffi'

谢谢!

【问题讨论】:

【参考方案1】:

我是 libffi 的作者。 pkg-config 应该找到它。你在做什么系统?您的系统上是否有 libffi.pc 文件?

【讨论】:

【参考方案2】:

看看它是如何在LLVM project 中实现的。搜索if( LLVM_ENABLE_FFI ) 行。

【讨论】:

以上是关于使用 CMake 查找 libffi 头文件的主要内容,如果未能解决你的问题,请参考以下文章

使用外部附加头文件构建 cmake 对象库

cmake在检查头文件时使用corrext c++标准

如何在使用 CMake 构建时列出 .hpp 头文件

CMake 和子文件夹中的头文件问题

CMake第三课--安装自己编写的头文件和共享库

使用 CMake 和 c++ 编译时,如果两个头文件名称相同,会发生啥情况?