柯南2:如何使用CMakeDeps并仍然找到目标?

aemubtdh  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(84)

我已经在我的柯南食谱中声明了以下生成器和需求:

generators = "CMakeDeps"

def requirements(self):
    self.requires("openssl/[>=1.1 <4]")

字符串
在我的recipe中也有一个generate()方法:

def generate(self):
    toolchain = CMakeToolchain(self)
    toolchain.generate()


问题是,当使用“CMakeDeps”生成器时,构建过程失败,当删除它时,构建过程成功。它失败了,说明找不到openssl:openssl目标。但是,FindOpenSSL.cmake文件在build文件夹内的generators文件夹中可用。
它是,当删除“CMakeDeps”生成器,从“usr/share/cmake-3.16/Modules”的FindOpenSSL.cmake文件被使用?以及如何告诉CMake使用由CMakeDeps创建的FindOpenSSL.cmake文件.

juzqafwq

juzqafwq1#

CMakeDeps生成器只会生成所有这些Findxxx.cmake文件,但不会告诉CMake它们的安装位置。
要做到这一点,最安全的方法是一起使用CMakeToolchain生成器:

generators = "CMakeDeps", "CMakeToolchain"

字符串
然后你应该告诉CMake使用生成的文件:

conan install . --output-folder=build --build=missing
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release


conan_toolchain将包括安装这些新cmake文件的CMake模块路径,并将使用它而不是从您的系统中使用。
请先尝试遵循Conan 2.x教程。这是一个非常基本的指令,详细说明如下:https://docs.conan.io/2/tutorial/consuming_packages/build_simple_cmake_project.html

相关问题