conan入门(二十五):imports将包安装到本地项目或其他指定位置
Posted 10km
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了conan入门(二十五):imports将包安装到本地项目或其他指定位置相关的知识,希望对你有一定的参考价值。
conan imports将包安装到本地项目或其他指定位置
在嵌入式平台开发中,我想将conan用作包管理器。例如,我想运行conan install
将依赖库安装在在本地项目目录中,最好是直接安装到嵌入式平台供应商提供的SDK框架中,这样就可以直接利用SDK现成的编译架构完成最终程序编译生成镜像。所以我不希望从 ~/.conan
目录引用头文件和库。否则每次编译后都要手工复制库文件到SDK的文件夹中或要创建软连接,这都太麻烦了。
imports
可以实现这个要求。imports
将文件从 ~/.conan
目录复制到指定位置。因此,通过简单的两行代码,就可以将所有依赖项(头文件、库)复制到当前项目也可以复制到你指定的其他位置。只需将其添加到项目的conanfile.txt或 conanfile.py ,示例如下:
conanfile.txt
[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
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》
参考资料
《CONAN_DISABLE_CHECK_COMPILER》
conan系列文章
《conan入门(一):conan 及 JFrog Artifactory 安装》
《conan入门(二):conan 服务配置-密码管理及策略》
《conan入门(三):上传预编译的库(artifact)》
《conan入门(四):conan 引用第三方库示例》
《conan入门(五):conan 交叉编译引用第三方库示例》
《conan入门(六):conanfile.txt conanfile.py的区别》
《conan入门(七):将自己的项目生成conan包》
《conan入门(八):交叉编译自己的conan包项目》
《conan入门(九):NDK交叉编译自己的conan包项目塈profile的定义》
《conan入门(十):Windows下Android NDK交叉编译Boost》
《conan入门(十一):Linux下Android NDK交叉编译Boost》
《conan入门(十二):Windows NDK 编译 boost报错:CMake was unable to find a build program … MinGW Makefile》
《conan入门(十三):conan info 命令的基本用法》
《conan入门(十四):conan new 命令的新特性–模板功能(–template)》
《conan入门(十五):AttributeError: ‘CMake‘ object has no attribute ‘definitions‘》
《conan入门(十六):profile template功能实现不同平台下profile的统一》
《conan入门(十七):支持android NDK (armv7,armv8,x86,x86_64)交叉编译的统一profile jinja2模板》
《conan入门(十八):Cannot recognize the Windows subsystem, install MSYS2/cygwin or specify a build_require》
《conan入门(十九):封装第三方开源库cpp_redis示例》
《conan入门(二十):封装只包含头文件(header_only)的库示例》
《conan入门(二十一):解决MinGW编译Openssl的编译错误:crypto/dso/dso_win32.c》
《conan入门(二十二):编译 openssl要求python 3.7以上版本》
《conan入门(二十三):Windows下MinGW编译libcurl》
《conan入门(二十四):通过CONAN_DISABLE_CHECK_COMPILER禁用编译器检查》
《conan入门(二十五):imports将包安装到本地项目或其他指定位置》
以上是关于conan入门(二十五):imports将包安装到本地项目或其他指定位置的主要内容,如果未能解决你的问题,请参考以下文章
conan入门(二十六):使用make编译erpc/erpcgen(makefile)
conan入门(二十六):使用make编译erpc/erpcgen(makefile)
conan入门(二十三):Windows下MinGW编译libcurl
conan入门(二十四):通过CONAN_DISABLE_CHECK_COMPILER禁用编译器检查