0

我想知道 CMake 配置文件包应该如何在 Yocto 下工作。我在尝试安装Qpid Proton 库时偶然发现了这个问题,该库在安装过程中会生成一个配置文件包 ( ProtonCppConfig.cmake)。我的应用程序可以找到配置文件,但包含的路径是错误的。这是它的样子:

set (ProtonCpp_VERSION       0.35.0)

set (ProtonCpp_INCLUDE_DIRS  /usr/include)
set (ProtonCpp_LIBRARIES     optimized /usr/lib/libqpid-proton-cpp.so debug /usr/lib/libqpid-proton-cpp.so)

if (NOT TARGET Proton::cpp)
  # Sigh.. have to make this compat with cmake 2.8.12
  add_library(Proton::cpp UNKNOWN IMPORTED)
  set_target_properties(Proton::cpp
    PROPERTIES
      IMPORTED_LOCATION "/usr/lib/libqpid-proton-cpp.so"
      IMPORTED_LOCATION_DEBUG "/usr/lib/libqpid-proton-cpp.so"
      INTERFACE_INCLUDE_DIRECTORIES "${ProtonCpp_INCLUDE_DIRS}")
endif()

set (ProtonCpp_FOUND True)

它将硬编码的绝对路径设置为/usr/lib/. 显然这是行不通的,因为实际上该库安装在 Yocto 工作目录中的某个位置,而不是/usr/lib我的构建主机中。

但是它应该使用什么路径呢?Proton 配方将其工件安装在<proton-workdir>/sysroot-destdir/.... 我的应用程序在<myapp-workdir>/recipe-sysroot/.... 通过硬链接,这两个目录树在物理上碰巧是相同的,但从配方的角度来看,路径是不同的。

我想这一定是一个问题ProtonCppConfig.cmake,但我看不出该文件应该是什么样子。

这如何与其他食谱一起使用?有人可以向我展示另一个提供配置文件包的库的好例子吗?那里的安装路径是硬编码的吗?

4

0 回答 0