pkg_check_modules 找不到 *.pc.cmake
pkg_check_modules cannot find *.pc.cmake
我正在使用第 3 方库 rbdl,其中包含 rbdl.pc.cmake,其中 'I suppose' 用于在 cmake 文件中使用 pkg_check_modules
。
我更新 PKG_CONFIG_PATH
以指向 rbdl 文件夹
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${CMAKE_BINARY_DIR}/externals/rbdl")
pkg_check_modules(RBDL rbdl)
但是pkg_check_modules
说找不到模块。
当我手动复制rbdl.pc.cmake时,在终端中将副本重命名为rbdl.pc和运行 pkg-config --cflags --libs rbdl
,然后我的cmake也开始工作了!
有趣的是,现在即使我删除 rbdl.pc,如果 rbdl.pc.cmake 完美找到了 rbdl 模块!
所以我的问题是:
- *.pc和*.pc.cmake有什么区别?
- 如何正确设置我的 cmake 以使用原始 rbdl.pc.cmake?
- 为什么 rbdl.pc.cmake 在通过复制、重命名副本和手动 运行ning pkg-config 进行调整后开始被
pkg_check_modules
接受?
你理解错了! rbdl.pc.cmake
只是一个模板文件。它不应该被你使用!查看用于呈现变量的 CMakeLists.txt
行 160 -- configure_file()
(模板文件中 @
的 "quoted")并生成 rbdl.pc
(真正的 pkg-config
) 文件。应安装后者(以某种方式),然后可供 pkg-config
使用,因此可用于您的项目。
pkg-config
是愚蠢的 不要以任何方式解释或验证 compiler/linker 标志,所以你重命名的文件 "works" (是的,产生 无效 compiler/linker) 的命令行。
我希望您在尝试使用它编写代码之前阅读 CMake 文档!它将节省您的时间并为您提供必要的知识,从而阻止您做 愚蠢的事情,就像您在问题中描述的那样;-)
我正在使用第 3 方库 rbdl,其中包含 rbdl.pc.cmake,其中 'I suppose' 用于在 cmake 文件中使用 pkg_check_modules
。
我更新 PKG_CONFIG_PATH
以指向 rbdl 文件夹
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${CMAKE_BINARY_DIR}/externals/rbdl")
pkg_check_modules(RBDL rbdl)
但是pkg_check_modules
说找不到模块。
当我手动复制rbdl.pc.cmake时,在终端中将副本重命名为rbdl.pc和运行 pkg-config --cflags --libs rbdl
,然后我的cmake也开始工作了!
有趣的是,现在即使我删除 rbdl.pc,如果 rbdl.pc.cmake 完美找到了 rbdl 模块!
所以我的问题是:
- *.pc和*.pc.cmake有什么区别?
- 如何正确设置我的 cmake 以使用原始 rbdl.pc.cmake?
- 为什么 rbdl.pc.cmake 在通过复制、重命名副本和手动 运行ning pkg-config 进行调整后开始被
pkg_check_modules
接受?
你理解错了! rbdl.pc.cmake
只是一个模板文件。它不应该被你使用!查看用于呈现变量的 CMakeLists.txt
行 160 -- configure_file()
(模板文件中 @
的 "quoted")并生成 rbdl.pc
(真正的 pkg-config
) 文件。应安装后者(以某种方式),然后可供 pkg-config
使用,因此可用于您的项目。
pkg-config
是愚蠢的 不要以任何方式解释或验证 compiler/linker 标志,所以你重命名的文件 "works" (是的,产生 无效 compiler/linker) 的命令行。
我希望您在尝试使用它编写代码之前阅读 CMake 文档!它将节省您的时间并为您提供必要的知识,从而阻止您做 愚蠢的事情,就像您在问题中描述的那样;-)