簡體   English   中英

如何通過 Conan 和 CMake 查找 pkg-config 的 .pc 文件

[英]How to find .pc files for pkg-config via Conan and CMake

如何讓 pkg-config 找到通過 Conan 安裝的依賴項和不在 Conan 中的依賴項?

我的目標包是使用 CMake 構建的,並使用 pkg-config 和pkg_check_modules()查找其依賴項。 其中一個依賴項 ( glib-2.0 ) 是通過 Conan 安裝的,另一個 ( libsecret-1 ) 不是,因為沒有包。

在我的 conanfile 中,我將 pkg-config_installer 配置為構建要求( self.build_requires("pkg-config_installer/0.29.2@bincrafters/stable") 。構建包時,CMake 正確調用此 pkg-config。

結果,pkg-config 找到 glib 就好了,但它找不到 libsecret。 我假設它找到了通過 Conan 安裝的依賴項的.pc文件,但沒有找到libsecret-1.pc ,它位於我的系統上的/usr/lib/pkgconfig/

我試着告訴柯南的 CMake 工具使用這個路徑: tools.PkgConfig("libsecret-1").variables["pcfiledir"]告訴我它在哪里,CMake 工具的配置方法有一個pkg_config_paths參數。 不幸的是,這沒有任何改變。

以下步驟使其對我有用:

  • PKG_CONFIG_PATH環境變量設置為pcfiledir找到的tools.PkgConfig
  • 不要將任何pkg_config_paths傳遞給tools.CMake.configure() ,它不能很好地處理絕對路徑並與環境變量沖突
  • package_info步驟中將系統范圍內安裝的庫(在我的情況下為secret-1 )添加到cpp_info.system_libs

感謝@uilianries 的有用評論!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM