为 CMake 项目创建一个配方,使用 find_package 查找其依赖项

Posted

技术标签:

【中文标题】为 CMake 项目创建一个配方,使用 find_package 查找其依赖项【英文标题】:Creating a recipe for a CMake project that finds its dependencies with find_package 【发布时间】:2021-12-12 23:18:22 【问题描述】:

我想为我在 Github 上找到的一个项目制作一个柯南包。该项目是一个 CMake 项目,依赖于 openssl。该项目使用正常的 find_package 找到 openssl。

我的配方显然声明了 openssl 依赖项,但我苦苦挣扎的是如何在项目的 CMake 中获取 find_package(openssl) 以找到柯南获得的 openssl?

【问题讨论】:

【参考方案1】:

您需要cmake_find_package 生成器。

from conans import ConanFile

class Foo(ConanFile):
    requires = "openssl/1.1.1l"
    generators = "cmake", "cmake_find_package"

    ...

这将为您的所有依赖项生成Findxxx.cmake

如果您是第一次创建包,我建议您阅读官方文档中的how to create a package,以及Conan Center Index 中的最佳实践。

更新:使用CMakeDeps

柯南 2.0 进行了许多改进,包括生成器的新方法。 CMakeDeps 是需要 xxx-config.cmake 时的新方法。它还没有开始的文档,但它的引用带来了一个非常简单的例子。

【讨论】:

以上是关于为 CMake 项目创建一个配方,使用 find_package 查找其依赖项的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cmake 上使用 FIND_JNI

如何通过CMake查找特定/本地文件

CMake中find_library的使用

CMake中find_library的使用

对 CMake find_path 提示使用正则表达式

你如何告诉 CMake 静态链接到使用 find_package 找到的包中的库?