conan 安装 Conan是一个面向 C 和 C++ 开发人员的软件包管理器。 Conan是通用且便携的。 打conan下载页面 https://conan.io/downloads.html就可以找到你需要的Client和Servert程序: conan (Client) conan 提供了各种操作系统平台的 添加私有仓库 执行conan remote list看一下都有那些远程仓库(制品库),显示conan默认的制品库列表只有一个conan自己维护的中央仓库conancenter $ conan remote conan search 我们现在可以执行conan search验证二进制包文件是否在conan本地仓库中: $ conan search Existing package recipes: hello /0.1@demo/testing conan本地仓库保存在$HOME/.conan/data下,资源管理器器打开文件夹也能看到conan create生成的数据 conan upload 如下执行conan
conan info 命令的基本用法 conan info命令用于获取有关包的依赖关系图的信息。 /github.com/conan-io/conan-center-index Homepage: https://www.boost.org License: BSL-1.0 URL: https://github.com/conan-io/conan-center-index Homepage: http://www.bzip.org License URL: https://github.com/conan-io/conan-center-index Homepage: https://zlib.net License: 比如我们要获取自己的项目的依赖关系图,可以用: $ conan info. $ conan info./conanfile.txt $ conan info.
conan 交叉编译自己的conan包项目 上一篇博客《conan入门(七):将自己的项目生成conan包》中我们以jsonlib为例说明了如何将自己的模块封装成conan提供给第三方使用。 命令来代替完成 根据Conan官方文档《conan create》的说明,conan create等价于 $ conan export $ conan test . jsonlib/1.0.0@ 也就是说执行conan create相当执行了conan export,conan install,conan test三条命令 在交叉编译环境下不能执行测试命令 后面就很简单 : conan export 将conan包 复制到本地仓库 conan install 完成conan 二进制包交叉编译 或直接用 conan create . --test-folder None代替上面两条命令 conan upload 负责 conan包的上传发布 参考资料 《conan export》 《conan install》 《conan upload
conan 服务配置 密码管理及策略配置 第一次以管理员身份(admin)使用默认密码(password)WEB登录入JFrog Artifactory后台时,系统就提示要求我修改密码,因为现有密码太简单不符合安全要求
conan 将自己的项目生成conan包 在之前的博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。 显然手写是不可能的,conan new 命令就是用于创建一个新的conan配置文件模板。 for conan new command》 conan new命令的详细说明参见Conan官方文档《conan new》 update jsonlib 现在我们在Conan生成的项目框架上,把 create .根据配置文件 (同级文件夹下的conanfile.py) 构建二进制包 conan create 命令行用法参见Conan官方文档《conan create》 conan create 后面就很简单 : conan create 完成conan 二进制包编译 conan upload 负责 conan包的上传发布 参考资料 《conan new》 《conan upload》 《conan
conan NDK交叉编译自己的conan包项目塈profile的定义 上一篇博客《conan入门(八):交叉编译自己的conan包项目》中我们以jsonlib为例说明了如何将交叉编译自己封装成conan profile 上一篇博客《conan入门(八):交叉编译自己的conan包项目》中我们是以如下指定来执行交叉编译的。 conan_example jsonlib分支 $ cd conan_example # 将conan包(conanfile.py 和相关文件,不包括编译生成的二进制包)复制到本地仓库。 conan封装项目执行Android NDK交叉编译的conan二进制包发布的过程: 开始麻烦些,需要准备profile(可复用),后面就很简单 : conan create 完成交叉编译 conan upload 负责 conan包的上传发布 参考资料 《conan create》 《conan upload》 《Package scaffolding for conan new command》
conan 引用第三方库示例 Conan 是 C 和 C++ 语言的依赖项和包管理器。 官方文档《conanfile.txt》 conan search 创建conanfile.txt过程中我们可以通过conan search cjson -r conancenter查看远程conan中央仓库有哪些 search命令的更详细用法参见Conan官方文档《conan search》 conan inspect 执行conan inspect 可以查看指定的包的基本信息 $ conan inspect cjson 中央仓库(conancenter)获取包的信息 关于conan inspect命令的详细说明参见Conan官方文档《conan inspect》 CMakeLists.txt 基于CMake构建项目就需要创建 ,如果没有@,conan install 会把 cjson/1.7.13当做一个路径 关于 conan install更详细的说明参见Conan官方文档:《conan install》 build json_test
conan new 命令的新特性–模板功能(–template) 从1.40.0版本开始conan new命令增加了一个新特性–预定义模板(Predefined templates),这不仅对于新手是个很友好的功能 ,对于所有conan的用户都是很有用的功能,大大减少了创建一个新conan包敲代码的工作量。 对于像我这样一个Conan入门用户,对Python也不熟悉,一开始为了创建一个简单的Conan就要写一堆python代码实在是比较麻烦的事儿。 比如我们要创建一个C++库的Conan项目框架,则如下执行conan new命令 $ mkdir mypackage && cd mypackage $ conan new mypackage/0.0.0 .h或.c源码以供项目使用,我花了很少的时间就将它改造为支持Conan引用的项目,如下执行conan create .就完成了项目编译和本地仓库发布。
conan 交叉编译引用第三方库示例 Conan 是 C 和 C++ 语言的依赖项和包管理器。 @《Conan官方文档》 在上一篇博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。 variables》 如上篇博客差不多,执行conan install安装arm平台的cJSON库 $ cd conan_example $ mkdir build && cd build $ conan -- Conan: Using cmake global configuration -- Conan: Adjusting default RPATHs Conan policies -- Conan install命令更详细的说明参见Conan官方文档《conan install》 build conan_example 生成Makeifile 工程文件 $ cd conan_example/build
Conan 2.0 版本已经发布很久了,配套的 cmake-conan 工具也同时得到了更新,在原有 Conan 1.x 版本上增强了功能,对开源项目和公司内部已有的 CMake 项目非常友好,接入简单 cmake-conan 新特性 如果你尚未使用过 Conan 与 CMake 的组合,请参考我历史编写的一篇关于 cmake-conan v1 版本的文章,该文章描述了 Conan + CMake 在跨平台项目中的实战应用场景 工程实战 cmake-conan v2 维护在 develop2 分支,要求 conan 版本必须大于 2.0.5(使用 1.60.2 + CONAN_V2_MODE 也不行)。 /conan-cmake-v2-example -of=/Users/jj.deng/Documents/open-source/conan-cmake-v2-example/build/conan - 通过 CMake 初始化指定配置文件的方式来与 Conan 交互解决了以前我们业务 CMake 代码中包含了大部分对于 Conan 包处理的逻辑,以前的使用场景下如果脱离 Conan 业务的 CMake
conan 通过CONAN_DISABLE_CHECK_COMPILER禁用编译器检查 最近工作的一个单片机项目项目,用了一款不知名的芯片,坑爹的开发商提供的编译器中有C++编译器,但是不能正常工作。 : called by CMake conan helper -- Conan: called inside local cache -- Conan: Adjusting output directories -- Conan: Using cmake global configuration -- Conan: Adjusting default RPATHs Conan policies -- Conan check your conan profile settings (conan profile show [default|your_profile_name]) P.S. true) 参考资料 《conan_check_compiler()》 《CONAN_DISABLE_CHECK_COMPILER》
库 # 从 github 下载好 conan.cmake 并 include 到 CMake 工程中 # 判断是否指定了 CONAN_PROFILE_BUILD 和 CONAN_PROFILE_HOST ") message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake" "${CMAKE_BINARY_DIR }/conan.cmake") endif () include(${CMAKE_BINARY_DIR}/conan.cmake) if (CONAN_PROFILE_BUILD : checking conan executable -- Conan: Found program /opt/homebrew/bin/conan -- Conan: Version found Conan
conan Windows下Android NDK交叉编译Boost 上一篇博客《conan入门(九):NDK交叉编译自己的conan包项目塈profile的定义》中我们以jsonlib为例说明了如何NDK 系统环境 conan https://conan.io python3 https://www.python.org android-ndk-r19c NDK 下载 profile 与上一篇博客《conan install 命令行用法详细说明参见Conan官方文档《conan install》 -o without_stacktrace=True 指定不编译 stacktrace 库,不知道为什么conan $HOME/.conan/data/boost/1.69.0/_/_package 执行conan search boost/1.69.0@会显示二进制包的信息 conan upload(上传到私有制品库 的过程: 开始麻烦些,需要准备profile(可复用),后面就很简单 : conan install 完成交叉编译 conan upload 负责 conan包的上传发布 参考资料 《conan install
conan: AttributeError: ‘CMake’ object has no attribute ‘definitions’ 如下是一个简单的使用conan new加 --template参数指定模板为 cmake_exe生成的构建exe程序的conan包定义脚本(参见我的上一篇博客《conan new 命令的新特性–模板功能(–template)》). conanfile.py from conans import ConanFile from conan.tools.cmake import CMakeToolchain, CMake from conan.tools.layout import 按Conan官方说明conan.tools.cmake是比较新的还在实验阶段的一个功能,conan.tools.cmake.CMake中并没definitions成员。 这个实验包应该会在conan 2.0变为正式的,如果你和我一样也是刚conan入门,建议使用解决方案一,以避免今后使用中遇到其他与官方参考不一致的问题。
conan 上传预编译的库(artifact) 我们经常需要从现有二进制文件创建包,比如第三方或供应商提供的C/C++库(只有include和lib),或在引入conan管理包之前手工编译编译好C/C+ 现在我打算用conan来做包管理,对于我来说,将这些已经预编译好的库上传到conan私有制品库,是最省事的办法 。 conan new 使用conan new命令创建基本配置: $ cd cjson.build/release/ $ conan new cjson/1.7.15 --bare File saved: /settings.yml,其中包含conan配置文件中 settings允许值的默认定义 关于HOME/.conan/settings.yml参见 https://docs.conan.io/en/latest /extending/custom_settings.html#custom-settings conan upload 执行conan upload完成cjson/1.7.15包上传私有制品库 $ conan
conan conanfile.txt conanfile.py的区别 在之前的博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。 可以理解这个conanfile.txt的作用就是定义当前项目的conan配置。 /release/ $ conan new cjson/1.7.15 --bare File saved: conanfile.py conan new会在当前文件夹下生成conanfile.py, from 这些问题把刚conan入门的我搞糊涂了。 所以当我们执行conan new命令创建一个新的conan配置时,自动生成的是conanfile.py脚本。
conan 使用make编译erpc/erpcgen(makefile) conan是个包管理工具,不仅仅支持cmake编译,还支持很多常用的构建工具如configure/make,msbuild,VisualStudo ,meson,本文以NXP的Embedded RPC为例说明conan中如何使用make来构建项目。 环境,而msys2/cci.latest本身也提供了默认MinGW编译器,这有可能与你当前系统安装的编译版本不同,所以需要要通过环境变量CC,CXX等强制指定使用你自己的MinGW编译器,你可以在执行conan create命令时使用-e 参数来定义CC,CXX环境变量,但用起来挺麻烦的,所以为了简化在Windows下的编译时需要在$HOME/.conan/profiles下增加一下支持MinGW编译的profile RANLIB=$compile_prefix-gcc-ranlib CC=$compile_prefix-gcc CXX=$compile_prefix-g++ 有了这个profile,Windows下执行conan
conan Linux下Android NDK交叉编译Boost 上一篇博客《conan入门(十):Windows下Android NDK交叉编译Boost》中已经说明了Windows下Android 对于其他架构,所有工具的前缀都相同 conan install(交叉编译) 创建了profile后,编译Boost就比较简单 # 编译conan包复制到本地仓库。 install 命令行用法详细说明参见Conan官方文档《conan install》 -o without_stacktrace=True 指定不编译 stacktrace 库.不知道为什么conan $HOME/.conan/data/boost/1.69.0/_/_package 执行conan search boost/1.69.0@会显示二进制包的信息 $ conan search boost Conan官方文档:《conan upload》 参考资料 《conan install》 《conan upload》 《将 NDK 与其他构建系统配合使用》
conan Windows下MinGW编译libcurl Windows平台用 conan 使用MinGW编译器编译libcurl,要如下执行 CMD下执行 $ conan install libcurl libcurl:with_unix_sockets=False ^ --build missing 请将CC,CXX的值替换为你实际的MinGW编译器位置 MSYS2/git-bash下执行 $ conan False \ --build missing 关于为什么要用-e 指定CC,CXX编译器,是因为libcurl默认是依赖OpenSSL,而关于MinGW编译OpenSSL,参见我之前的文章: 《conan 默认的ssl库使用的是OpenSSL,但也可以使用其他的ssl库:wolfssl, schannel, darwinssl 通过with_ssl参数可以指定要使用的ssl库,如使用wolfssl $ conan
conan 编译 openssl要求python 3.7以上版本 今天在Windows平台 如下用MinGW(5.2.0)编译openssl的时候 $ conan install openssl/1.1.1m pkgconf/1.7.4: Configuring sources in C:\Users\10km\.conan\data\pkgconf\1.7.4\_\_\source pkgconf/1.7.4 : Copying sources to build folder pkgconf/1.7.4: Building your package in C:\Users\10km\.conan\data\pkgconf generators pkgconf/1.7.4: Calling build() Traceback (most recent call last): File "C:\Users\10km\.conan \1.7.4\_\_\build\fe620a9df344885a61c065d47599eec0b8b41c32\source_subfolder" "C:\Users\10km\.conan\data