- 主题:如何正确设置 CMakeLists.txt 中 *.pc 的安装路径
第一次用 cmake,发现 Linux 中的 pkgconfig 文件夹没有标准路径,比如,
RH 系:/usr/lib[64]/pkgconfig
Debian 系:/usr/lib/x86_64_linux_gnu/pkgconfig
那么 CMakeLists.txt 该怎么写,才能涵盖这种 Linux 发行版?
--
FROM 183.131.109.*
pkg_check_modules 会自动去pkg_config的目录搜索pc文件,并调用--libs, --cflags来
生成变量
【 在 easior 的大作中提到: 】
: 似乎这个是利用 PKG-CONFIG 工具配置其他库,并不是用来安装 .pc 文件本身的。
: 看了一下这个模块 PKG_CONFIG_FOUND 可用来检测 pkg-config 本身,
: 但没有 pc_path 的输出功能?
: ...................
--
FROM 119.139.196.*
我知道 pkg-config 的功能,现在的需求是:
要用 cmake 生成一个库文件,带有 .pc,
要把这个 .pc 文件安装到 Linux 系统中,
而不是用 pkg-config 去配置。
【 在 qlogic 的大作中提到: 】
: pkg_check_modules 会自动去pkg_config的目录搜索pc文件,并调用--libs, --cflags来
: 生成变量
--
FROM 183.131.109.*
pkg-config --variable pc_path pkg-config
【 在 easior 的大作中提到: 】
: 我知道 pkg-config 的功能,现在的需求是:
: 要用 cmake 生成一个库文件,带有 .pc,
: 要把这个 .pc 文件安装到 Linux 系统中,
: ...................
--
FROM 222.128.5.*
这个命令我知道,关键是在 CMakeLists.txt 中怎么写?
【 在 gameplayer 的大作中提到: 】
: pkg-config --variable pc_path pkg-config
--
FROM 183.131.109.*
可以手动分割检查:
include(FindPkgConfig)
pkg_get_variable(PC_PATH "pkg-config" "pc_path")
string(REPLACE ":" ";" PATH_LIST "${PC_PATH}")
foreach(dir ${PATH_LIST})
if (EXISTS ${dir} AND IS_DIRECTORY ${dir})
set(TARGET_PC_PATH ${dir})
break()
endif()
endforeach()
message(STATUS "Final Target ${TARGET_PC_PATH}")
上面只是找到了第一个可用的路径,还可以做更多限制,比如排个序,预置一些优先的
路径之类的
【 在 easior 的大作中提到: 】
: 这个命令我知道,关键是在 CMakeLists.txt 中怎么写?
--
修改:gameplayer FROM 222.128.5.*
FROM 222.128.5.*
还有一个办法:参考其它模块的pc文件的路径
比如当前项目依赖Qt5Core,那就可以假设Qt5Core.pc文件肯定存在,就可以用它的路径
保存pc文件
pkg_get_variable(QTPC_PATH "Qt5Core" "pcfiledir")
【 在 easior 的大作中提到: 】
: 这个命令我知道,关键是在 CMakeLists.txt 中怎么写?
--
FROM 222.128.5.*
多谢多谢,不愧为高知论坛
【 在 gameplayer 的大作中提到: 】
: 可以手动分割检查:
: include(FindPkgConfig)
: pkg_get_variable(PC_PATH "pkg-config" "pc_path")
: ...................
--
修改:easior FROM 183.131.109.*
FROM 183.131.109.*