使用conan进行源码以及依赖包管理时候的注意事项-找不到所需要的依赖包的时候该怎么做

Conan管理依赖包:找不到MNN包的解决办法

问题

在之前的一篇实现中:深度学习之用CelebA_Spoof数据集搭建一个活体检测-用MNN来推理时候如何利用Conan对软件包进行管理,有的人进行了尝试,问我为什么安装了conan和根据步骤进行操作后没办法进行编译,提示的是下面图示的信息。
在这里插入图片描述

也就是在设置的仓库中并没有MNN这个包和对应的版本存在。安装正常的逻辑说,在编译的过程中,会优先选择本地缓存包,如果有对应的平台和指定的包,则使用,否则会到指定的私有仓库去寻找(私有仓库建立见这里),没有就再次会到Conan的官方中央仓库去寻找。但图示的问题就是没有找到,这就意味着本地也没有,私有仓库也没有。其实原因是之前并没有人将MNN这个包和源码上传到中央仓库去,当然第一次使用私有仓库的时候也并没有上传。但是像opencv的这些库就有,因为这些库都是知名度很高的库,自然就有人传了上去。

如何做

自己做上传一个,也就是将MNN封装成conan包上传到conan服务器可以保存在本地缓存或者上传到自己的私有仓库,这就需要使用conan create conanfile.py这两个东西了,详见大牛的博客《conan入门(十九):封装第三方开源库cpp_redis示例》。
以使用MNN-2.4.0为例(因为我本地有1.2.7了)
首先需要conanfile.py,当然可以自己使用指令 conan new 自己重新来定义一个,也可以使用下面的文件:

from conan import ConanFile
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain
from conan.tools.env import VirtualBuildEnv
import os

class MnnConan(ConanFile):
    name = "mnn"
    version = "2.4.0"
    # Optional metadata
    url = "https://github.com/alibaba/MNN"
    description = "a highly efficient and lightweight deep learning framework"
    topics = ("deep learning","ai","mnn")

    tool_requires = "cmake/[>=3.15.7]"
    package_type = "library"
    # Binary configuration
    settings = "os", "compiler", "build_type", "arch"
    options = {
   
   
        "use_system_lib": [True, False],
        "build_hard": [True, False],
        "shared": [True, False],
        "win_runtime_mt": [True, False],
        "orbid_multi_thread": [True, False],
        "openmp": [True, False],
        "use_thread_pool": [True, False],
        "build_train": [True, False],
        "build_demo": [True, False],
        "build_tools": [True, False],
        "build_quantools": [True, False],
        "evaluation": [True, False],
        "build_converter": [True, False],
        "support_tflite_quan": [True, False],
        "debug_memory": [True, False],
        "debug_tensor_size": [True, False],
        "gpu_trace": [True, False],
        "portable_build": [True, False],
        "sep_build": [True, False],
        "aapl_fmwk": [True, False],
        
### 使用 vcpkg 或 conan 管理依赖项的最佳实践和常见注意事项 #### 1. 环境配置与工具初始化 确保正确初始化 `vcpkg` 或 `conan` 工具,并配置环境变量以支持自动化构建。例如,对于 `vcpkg`,可以通过以下命令集成到 CMake 构建系统中[^1]: ```bash ./vcpkg integrate install ``` 这将使 CMake 能够自动检测并链接由 `vcpkg` 安装的库。 对于 `conan`,需要在项目的 `conanfile.txt` 或 `conanfile.py` 中定义依赖项,并通过以下命令生成所需的构建文件: ```bash conan install . --output-folder=build --build=missing ``` #### 2. 避免重复安装或冲突 通过指定明确的安装路径和版本控制策略来避免重复安装或冲突。`vcpkg` 支持通过三元组(triplet)文件指定目标平台和架构,从而隔离不同环境下的依赖项。例如,创建一个自定义 triplet 文件 `x64-linux-custom.cmake` 并使用以下命令安装依赖项: ```bash ./vcpkg install urdfdom-headers:x64-linux-custom ``` 在 `conan` 中,可以通过设置 `settings` 和 `options` 来区分不同的构建变体,确保不会覆盖已有的依赖项安装[^3]。 #### 3. 离线模式与缓存管理 为了提高构建效率并减少网络依赖,建议启用离线模式或配置本地缓存。`vcpkg` 可以通过 `--dry-run` 参数预览安装操作,而 `conan` 提供了 `--build=missing` 选项以确保仅在必要时重新编译依赖项。此外,`conan` 还支持多远程仓库配置,以便从多个来源获取依赖项: ```python [remote_list] conan-center: https://center.conan.io True 1 custom-repo: https://my.custom.repo False 2 ``` #### 4. 自定义构建选项与跨平台支持 在使用 `vcpkg` 或 `conan` 时,可以根据项目需求定制构建选项。例如,在 `vcpkg` 中可以通过传递额外的 CMake 参数来调整构建行为: ```bash ./vcpkg install urdfdom-headers --triplet=x64-linux --overlay-ports=/path/to/custom/ports ``` 对于 `conan`,可以在 `conanfile.py` 中定义复杂的构建逻辑,包括条件依赖和自定义脚本执行[^2]。 #### 5. 清理与卸载依赖项 为确保项目的整洁性,定期清理不再使用的依赖项是必要的。`vcpkg` 提供了 `remove` 命令用于卸载指定包及其相关文件: ```bash ./vcpkg remove urdfdom-headers --recurse ``` 在 `conan` 中,可以通过以下命令清理缓存或删除特定包: ```bash conan remove urdfdom/* -f ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值