我想知道 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
,但我看不出该文件应该是什么样子。
这如何与其他食谱一起使用?有人可以向我展示另一个提供配置文件包的库的好例子吗?那里的安装路径是硬编码的吗?