当前位置: 首页 > news >正文

龙华网站建设设计网站建设方案书

龙华网站建设设计,网站建设方案书,诸城市网站建设,排名优化软件一般情况下,我们通过self.version字段定义conan 包的版本号如下: class PkgConan(ConanFile):name "pkg"version "1.7.3"因为版本号是写死的,所以这种方式有局限性: 比如我的java项目中版本号是在pom.xml中…

一般情况下,我们通过self.version字段定义conan 包的版本号如下:

class PkgConan(ConanFile):name = "pkg"version = "1.7.3"

因为版本号是写死的,所以这种方式有局限性:
比如我的java项目中版本号是在pom.xml中定义的,c++项目是java项目的子项目,如果java项目版本号升级了,我每次发布java版本的时候都需要手工修改conanfile.py中的self.version才能让c++子项目的版本号与java项目的版本号同步更新,虽然不复杂,但增加了维护工作量,容易忘记。
所以如果conanfile.py中定义的版本号能自动与pom.xml中的版本号同步是最好的解决办法,
conanfile.py中的 set_version方法用就是用于实现动态版本号定义。
这个方法在官方文档中有说明和示例,只不过官方示例只是从读取一个简单的包含了版本号的文本文件,赋值给self.version。(参见《set_version()》)

但对于pom.xml,就复杂些,需要引入xml相关的包,解析xml,然后读取version节点,pom.xml文件内容示例如下:

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gitee.l0km</groupId><artifactId>facedb</artifactId><version>3.1.1-SNAPSHOT</version><relativePath>..</relativePath></parent><artifactId>facedb-rpc-cpp</artifactId><name>facedb C++ client</name>
</project>

如下在conanfile.py中实现 set_version方法,方法中解析pom.xml,从中读取parent/version节点获取版本号。

from conan import ConanFile
import xml.etree.ElementTree as ET
import osclass Pkg(ConanFile):# 将包含版本号的pom.xml与conanfile.py放在一起exports = "pom.xml"exports_sources = "CMakeLists.txt","src/CMakeLists.txt", "src/facedbclient/*","src/facedbclient/CMakeLists.txt","src/gfaux_tools/*","src/gfaux_tools/CMakeLists.txt","src/test/*","src/test/CMakeLists.txt", "cmake/*.cmake.in"def set_version(self):# 从pom.xml中解析 parent/version 节点获取pom.xml中定义的版本root = ET.parse(os.path.join(self.recipe_folder,"pom.xml")).getroot()# 将版本号转为小写如果1.0.0-snapshot,因为conan不允许版本号中有大写字母# pom.xml中有namespace定义,所以要加{*}指定任意namespaceself.version = root.find("{*}parent/{*}version").text.lower()self.output.info(f"version:{self.version}")

完整的conanfile.py代码示例参见
https://gitee.com/l0km/facedb/blob/master/facedb-rpc-cpp/conanfile.py

参考资料

《set_version()》
《xml.etree.ElementTree》
《Reading Maven Pom xml in Python》

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入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》
《conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题》
《conan入门(二十九):对阿里mnn进行Conan封装塈conans.CMake和conan.tools.cmake.CMake的区别》
《conan入门(三十):对腾讯ncnn进行Conan封装》
《conan入门(三十一):在命令行(shell)中从profile中读取配置参数》
《conan 入门(三十二):package_info中配置禁用CMakeDeps生成使用项目自己生成的config.cmake》
《conan 入门(三十三):requirements()指定header的可见性(transitive_headers)》
《conan 入门(三十四):conan 2.x实现对只有Makefile的项目(erpcgen)的封装示例》
《conan 入门(三十五):在conanfile.py中获取C++编译器完整路径的方法》
《conan入门(三十六):在set_version方法中从pom.xml中读取版本号实现动态版本定义》

http://www.yidumall.com/news/94981.html

相关文章:

  • 排名优化seo公司广州seo招聘网
  • 百度做的网站 后台管理怎么进入广州做seo整站优化公司
  • 苹果浏览器怎么信任网站设置代发百度首页排名
  • 网站备案 法人变更电脑速成班短期电脑培训班
  • 专做进口批发的网站如何进行app推广
  • 如何建设网站知乎世界杯数据分析
  • 做网站第一合肥seo快排扣费
  • 通州顺德网站建设百度广告收费表
  • b2b平台推广计划seo排名外包
  • 广告设计店名大全广州推广优化
  • 辛集做网站公司天津seo招聘
  • 阿里巴巴网站开发信在哪电商培训机构哪家好
  • 广东大唐建设网站淘宝seo优化
  • 如何弄自己的公司网站泉州seo托管
  • 网站建设多少钱一年对网站的建议和优化
  • 安徽省建设部网站友情链接管理系统
  • seo推广培训课程内蒙古网站seo
  • 无极招聘网无极在线关键词优化营销
  • 网站开发工具可视化软文代写代发
  • dw做网站是静态还是动态广州网站建设费用
  • 网站建设设计制作方案与价格百度官网认证价格
  • 怎么修改网站的关键词福州seo视频
  • 泉州那家做网站公司好成都网站建设系统
  • 百度网站的优势中国广告网
  • 源码库官网seo数据是什么意思
  • erp系统下载手机版seo教学平台
  • 自己人网站建设seo自然排名
  • WordPress网站属于什么网站手机怎么建网站
  • 永州网站开发公司互联网推广平台
  • wordpress自定义导航seo策略是什么意思