前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >conan入门(二十五):imports将包安装到本地项目或其他指定位置

conan入门(二十五):imports将包安装到本地项目或其他指定位置

作者头像
10km
发布2022-04-13 12:35:15
9600
发布2022-04-13 12:35:15
举报
文章被收录于专栏:10km的专栏

conan imports将包安装到本地项目或其他指定位置

在嵌入式平台开发中,我想将conan用作包管理器。例如,我想运行conan install将依赖库安装在在本地项目目录中,最好是直接安装到嵌入式平台供应商提供的SDK框架中,这样就可以直接利用SDK现成的编译架构完成最终程序编译生成镜像。所以我不希望从 ~/.conan 目录引用头文件和库。否则每次编译后都要手工复制库文件到SDK的文件夹中或要创建软连接,这都太麻烦了。

imports可以实现这个要求。imports将文件从 ~/.conan 目录复制到指定位置。因此,通过简单的两行代码,就可以将所有依赖项(头文件、库)复制到当前项目也可以复制到你指定的其他位置。只需将其添加到项目的conanfile.txt或 conanfile.py ,示例如下:

conanfile.txt

代码语言:javascript
复制
[requires]
cjson/1.7.13
[imports]
include, * -> ./deps/include
lib, * -> ./deps/lib

include,lib为复制文件的源文件夹,必须是个相对路径,即为所有依赖库在本地仓库的相对文件夹

*为指定要复制文件的通配符,如*.h,*.a

./deps/include,./deps/lib为文件复制的目标文件夹,可以是个绝对路径,如果不是绝对路径,那么视为相对于当前项目文件夹的相对路径

上面的例子,将项目的所有依赖库(cjson)的include,lib下所有文件分别复制到项目文件夹的deps/include,deps/lib

下面是个更灵活的例子,将所有依赖库(.a,.h)文件复制到环境变量DK_PREFIX定义的SDK 安装位置

conanfile.py

代码语言:javascript
复制
import os,re ## 用于读取环境变量和正则表达式判断变量的布尔值 
from conans import ConanFile, CMake

class YourProjectConan(ConanFile):
    ####################################
	# 定义imports方法实现依赖库导入到指定位置
	def imports(self):
        # 环境变量IMPORT_TO_SDK如果设置为True
        # 复制依赖库所有.a,.h文件到环境变量SDK_PREFIX定义的SDK 位置的子文件夹Third-party下
        if re.match(r'^(?:true|on|1|y(es))?$',os.getenv("IMPORT_TO_SDK","False"),re.I):
            self.copy("*.[ah]", dst=os.path.join(os.getenv("SDK_PREFIX"),"Third-party",self.name +"-deps"), src="")    

参考资料

《Installing packages to local project #137》

《imports()》

《[imports]》

《conan_check_compiler()》

《CONAN_DISABLE_CHECK_COMPILER》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • conan imports将包安装到本地项目或其他指定位置
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档