网站里的内容都是什么作用新零售商城系统开发

pingmian/2026/1/21 7:33:47/文章来源:
网站里的内容都是什么作用,新零售商城系统开发,园艺建设网站,企业邮箱怎么在手机上登录一些已有的较老旧的项目只有Makefile#xff0c;一般在Linux下编译#xff0c;windows下编译需要借助cygwin或msys2,对于这样的项目如何实现conanfile.py使用conan进行构建呢#xff1f;本文以erpc/erpcgen为例#xff0c;说明实现步骤。 eRPC (Embedded RPC是一个适用于嵌…一些已有的较老旧的项目只有Makefile一般在Linux下编译windows下编译需要借助cygwin或msys2,对于这样的项目如何实现conanfile.py使用conan进行构建呢本文以erpc/erpcgen为例说明实现步骤。 eRPC (Embedded RPC是一个适用于嵌入式系统的开源RPC框架erpc/erpcgen为其下的IDL编译器编译基于Makefile.现在需要把它封装为conan的package.这就是我最近遇到的问题。 下面我们分步说明实现的要点 requires erpcgen依赖很简单只有boost requires boost/[1.69.0]build_requirements erpcgen编译依赖的工具需要flex,bision,在windows下就是winflexbison, 在windows下需要在msys2环境编译工具依赖还要加上msys2 def build_requirements(self):if self._settings_build.os Windows:self.tool_requires(winflexbison/2.5.24)self.win_bash Trueif not self.conf.get(tools.microsoft.bash:path, check_typestr):# Windows下需要在MSYS2环境编译self.tool_requires(msys2/cci.latest)else:self.tool_requires(flex/2.6.4)self.tool_requires(bison/3.7.6)msys2中的C编译器 上一节说了windows下需要在msys2环境编译msys2也是可以有自带的c编译器的。如果msys2中的c编译器与profile中定义的gcc编译版本不一致。那么erpcgen编译阶段可以正常通过但在连接过程就会报错。因为依赖库boost的适用版本是按profile中定义的编译器版本提供的。 所以在msys2环境执行编译时不能使用msys2自带的编译器需要通过CXX环境变量将windows系统安装的g编译器传递给msys2环境而使用指定的外部编译器。 所以需要在 build_requirements 方法中增加如下逻辑将在windows shell中获取g编译器的全路径保存到成员self.cxx_path注意这个时时候self.win_bash不能为True def build_requirements(self):if self._settings_build.os Windows:# 获取 windows系统定义的g编译器位置buf StringIO()self.run(where g,stdoutbuf)if not buf.getvalue():raise Exception(Not found g compiler by where gcc)# 获取命令返回的第一行,删除末尾的换行符self.cxx_path buf.getvalue().strip().split(\r\n)[0]然后这个self.cxx_path会在后面的AutotoolsToolchain生成时被定义到CXX环境变量中 generate erpcgen中需要的编译工具flex,bision的可执行程序头文件位置以及boost的位置都是通过环境变量提供给Makefile的。所以需要在 generate 方法中定义相应的环境变量FLEX,BISON,BOOST_ROOT,INCLUDES 同时还有上一节涉及到的将windows系统下的C编译器位置通过定义CXX变量提供给msys2环境。 这里使用AutotoolsToolchain实现环境变量修改与后面的package方法中的Autotools匹配 def generate(self):tc AutotoolsToolchain(self)env tc.environment()if self._settings_build.os Windows:# erpcgen中使用环境变量FLEX定义flex,BISON定义bison,# 与winflexbison加载时定义的变量名不一样,所以这里要# 定义环境变量 FLEX$LEX,BISON$YACCenv.define(FLEX,self.dependencies.build[winflexbison].buildenv_info.vars(self).get(LEX))env.define(BISON,self.dependencies.build[winflexbison].buildenv_info.vars(self).get(YACC))include_path unix_path(self,os.path.join(self.dependencies.build[winflexbison].package_folder, include))# 使用外部定义的C编译器避免使用msys2内置的编译器否则会因为编译版本不一致导致连接错误env.define(CXX,unix_path(self,self.cxx_path))else:# 定义环境变量 FLEX$LEX,BISON$BISON_ROOT/bin/bisonenv.define(FLEX,os.path.join(self.dependencies.build[flex].package_folder,bin, flex))env.define(BISON,self.dependencies.build[bison].buildenv_info.vars(self).get(CONAN_BISON_ROOT) /bin/bison)include_path os.path.join(self.dependencies.build[flex].package_folder, include)# 将 flex的include文件夹添加到INCLUDES环境变量参见 erpc/erpcgen/Makefile中INCLUDES变量env.append(INCLUDES,include_path)# 指定boost位置boost_root unix_path(self,self.dependencies[boost].package_folder) env.define(BOOST_ROOT,boost_root)env.append(LDFLAGS,-L os.path.join(boost_root,lib))tc.generate(env)# 输出环境变量self.output.info(Environment Variables:)for name, value in env.vars(self).items():self.output.info(f{name}{value})package 虽然erpcgen项目不是autools生成的项目但它可以调用make执行Makefile.所以在此一样可以使用AutotoolsToolchainAutotools实现编译 如下package方法执行Autotools.install 方法实现 erpcgen编译并安装到package_folder def package(self):autotools Autotools(self)autotools.install(args[-C, erpc/erpcgen, PREFIX{}.format(unix_path(self,self.package_folder))])完整代码 完整的python代码 from conan import ConanFile,tools from conan.tools.env import VirtualBuildEnv from conan.tools.microsoft.subsystems import unix_path from conan.tools.files import chdir from conan.tools.gnu import Autotools, AutotoolsToolchain import os from six import StringIOclass ErpcgenConan(ConanFile):name erpcgenversion 1.7.3-patch# Optional metadatalicense BSD-2-Clauseauthor guyadong 10km0811sohu.comurl https://gitee.com/l0km/erpcexdescription erpcgen base NXP Embedded RPCtopics (embedded,erpc,nxp,erpcgen)package_type applicationrequires boost/[1.69.0]# Binary configurationsettings os, compiler, build_type, archoptions {shared: [True, False], fPIC: [True, False]}default_options {shared: False, fPIC: True}# Sources are located in the same place as this recipe, copy them to the recipeexports_sources erpc/*propertydef _settings_build(self):return getattr(self, settings_build, self.settings)propertydef _cxx_path(self):if self._settings_build.os Windows:buf StringIO()self.run(where g,stdoutbuf)if not buf.getvalue():raise Exception(Not found g compiler by where gcc)# 获取命令返回的第一行return buf.getvalue().strip().split(\r\n)[0]else:return def config_options(self):if self.settings.os Windows:del self.options.fPICif self.settings.compiler msvc:# 不支持Visual Studio编译,报错退出raise Exception(Unsupport Visual Studio,plese use MinGw compiler for Windows)def build_requirements(self):if self._settings_build.os Windows:# 获取 windows系统定义的g编译器位置buf StringIO()self.run(where g,stdoutbuf)if not buf.getvalue():raise Exception(Not found g compiler by where gcc)# 获取命令返回的第一行self.cxx_path buf.getvalue().strip().split(\r\n)[0]self.tool_requires(winflexbison/2.5.24)self.win_bash Trueif not self.conf.get(tools.microsoft.bash:path, check_typestr):# Windows下需要在MSYS2环境编译self.tool_requires(msys2/cci.latest)else:self.tool_requires(flex/2.6.4)self.tool_requires(bison/3.7.6)def generate(self):tc AutotoolsToolchain(self)env tc.environment()if self._settings_build.os Windows:# erpcgen中使用环境变量FLEX定义flex,BISON定义bison,# 与winflexbison加载时定义的变量名不一样,所以这里要# 定义环境变量 FLEX$LEX,BISON$YACCenv.define(FLEX,self.dependencies.build[winflexbison].buildenv_info.vars(self).get(LEX))env.define(BISON,self.dependencies.build[winflexbison].buildenv_info.vars(self).get(YACC))include_path unix_path(self,os.path.join(self.dependencies.build[winflexbison].package_folder, include))# 使用外部定义的C编译器避免使用msys2内置的编译器否则会因为编译版本不一致导致连接错误env.define(CXX,unix_path(self,self.cxx_path))else:# 定义环境变量 FLEX$LEX,BISON$BISON_ROOT/bin/bisonenv.define(FLEX,os.path.join(self.dependencies.build[flex].package_folder,bin, flex))env.define(BISON,self.dependencies.build[bison].buildenv_info.vars(self).get(CONAN_BISON_ROOT) /bin/bison)include_path os.path.join(self.dependencies.build[flex].package_folder, include)# 将 flex的include文件夹添加到INCLUDES环境变量参见 erpc/erpcgen/Makefile中INCLUDES变量env.append(INCLUDES,include_path)# 指定boost位置boost_root unix_path(self,self.dependencies[boost].package_folder) env.define(BOOST_ROOT,boost_root)env.append(LDFLAGS,-L os.path.join(boost_root,lib))tc.generate(env)# 输出环境变量self.output.info(Environment Variables:)for name, value in env.vars(self).items():self.output.info(f{name}{value})def package(self):autotools Autotools(self)autotools.install(args[-C, erpc/erpcgen, PREFIX{}.format(unix_path(self,self.package_folder))])完整的项目参见我的代码仓库https://gitee.com/l0km/erpcex conanfile-erpcgen.py 使用示例 conan create .\conanfile-erpcgen.py 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)的封装示例》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站做推广需要什么黄岐建网站

文章目录 测试数据需求说明需求实现 前言:本题制作参考牛客网进阶题目 —— SQL128 未完成试卷数大于1的有效用户 测试数据 -- 创建用户表 DROP TABLE IF EXISTS users; CREATE TABLE users (user_id INT,name STRING,age INT,gender STRING,register_date STRING…

淘客网站怎么做代理网站推广攻略

目录 文件内核对象 文件描述符的分配规则 重定向 重定向的概念 dup2系统调用 输出重定向 追加重定向 输入重定向 stderr解析 重定向到同一个文件中 分离常规输出和错输出 文件内核对象 上篇文章中我们介绍到了操作系统中的文件,操作系统为了方…

电商网站建设实训心得网络公司哪个平台好

定义,在这两种资源的文件出现在你的代码 并在onCreate()在所有视图中Activity可以检查方向绑定的意见,你的类的对象。示例。在这里我们有包含在这两个文件的ImageView的,并在画像文件有一个TextView和景观它包含Button代替TextViewmy_layout.…

es网站建设文档流程做网站

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 网络安全认证技术是指通过密码、数字证书、生物特征识别等手段,对使用网络的用…

建设房地产网站招标采购导航网

目录 1.题目2.答案3.提交结果截图4.图解 链接: 串联所有单词的子串 1.题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 w…

营销型网站是什么我市建设车辆违章查询网站 病句

过去几个月,深陷所谓“事理图谱”当中,苦恼不已。从2018年4月份开始做所谓的“事理图谱”以来至今,磕磕碰碰,做了很多技术上的尝试,也不乏在应用事理图谱上尝试了多种做法,也不乏写了几篇关于事理图谱的文章…

网站建设侵权免费好玩的网页游戏

ifconfig不显示IP地址 可以看到ens160并没有显示IP地址,刚刚装好的虚拟机是很干净的,连网卡都没有,我们修改一个配置文件: vim /etc/sysconfig/network-scripts/ifcfg-ens160将文件中的onboot修改为yes,即启动时需不需…

山西设计网站公司怎样把自己做的网站上传到网上

大数据场景下的数据库有很多种,每种数据库根据其数据模型、查询语言、一致性模型和分布式架构等特性,都有其特定的使用场景。以下是一些常见的大数据数据库: 1. **NoSQL 数据库**:这类数据库通常用于处理大规模、非结构化的数据。…

利用access做网站天猫网站是用什么技术做的

在完成jdk的配置后进行 配置方法: ①安装tomcat ②我的电脑--属性--高级系统设置--环境变量 ③创建CATALINA_HOME变量 ④然后编辑 path 环境变量引入CATALINA_HOME变量值 ⑤测试,打开浏览器输入localhost:8080 环境变量写法:  第…

做株洲网站需要多少钱手机网站建设合同

简介 什么是死锁? 我认为,死锁是由于两个对象在拥有一份资源的情况下申请另一份资源,而另一份资源恰好又是这两对象正持有的,导致两对象无法完成操作,且所持资源无法释放。 什么又是阻塞? 阻塞是由于资源不…

淮北论坛中文网站的seo怎么做

文章目录 C介绍环境配置第一个cpp程序案例练习 变量常量关系运算符逻辑运算符条件运算符位运算符类型转换分支循环程序调用综合案例 C介绍 基于C语言,继承了C的所有语法; 静态类型语言,需要先编译,再执行; 贴近底层硬…

小广告图片素材seo外链在线工具

一、前言实际上权限系统老早之前我就在一直开发,大概在刚毕业没多久就想一个人写一个系统,断断续续一直坚持到现在,毕竟自己亲动手自写的系统才有收获,本篇仅介绍权限。小小系统上不了台面,望各位大神勿喷。二、系统介…

网站友情链接的作用字体在线设计网站

文章目录1.首先了解一下linux的目录结构2.linux的基本命令之使用命令开关机3.linux的基本命令之目录管理1.ls—列出目录命令2.cd—切换目录命令3.pwd—查看当前所在目录命令4.mkdir—创建文件夹命令5.rmdir—删除文件夹命令6.cp—复制文件命令7.rm—传说中的删库跑路命令8.mv—…

网站建设后预期推广方式网站建设如何吸引投资

51单片机项目基础篇 LED流水灯1、硬件电路设计和原理分析2、软件设计2.1、利用循环和移位操作符功能实现:LED流水灯2.2、利用利用封装好的库函数功能实现:LED流水灯 3、编译结果4、结束语 LED流水灯 前言: 前几篇学会了LED驱动原理&#xff…

设备高端网站建设薇晓朵 wordpress 下载

Docker-compose下配置Mysql,Redis,MongoDB详解一、docker-compose简介二、构建一个实例项目1.前后端实现2.Dockerfile及docker-compose.yml3. 生成镜像三、实例程序源码一、docker-compose简介 Compose是用于定义和运行多容器Docker应用程序的工具。通过…

单位建设网站的目的模板网站建设价位

JAVA代码编写 动态规划(Dynamic Programming) 一个问题可以划分为多个子问题,且子问题之间有关联,就可以使用动态规划。 动态规划问题步骤: 确定dp数组(dp table)以及下标的含义确定递推公式…

山东网站建设网络公司凡科轻站官网

1 Laspy库介绍 laspy是一个Python库,主要用于读取、修改和创建LAS点云文件。该库兼容Python 2.6和3.5,并且可以处理LAS版本1.0-1.3的文件。 在laspy库中,可以使用命令行工具进行文件操作,如格式转换和验证,以及比较LAS…

深圳市建设交易网站菏泽百度推广公司电话

Java基础11——抽象类和接口 抽象类和抽象方法 区分普通方法和抽象方法 在Java 中,当一个类被 abstract 关键字修饰的时候这个类称为抽象类。当一个类的方法被 abstract 关键字修饰的时候,该方法称为抽象 方法。抽象方法必须定义在抽象类中。当一个方…

服装网站建设策划书预期投入广东睿营建设有限公司网站

亲爱的Linux用户们,是不是有时候觉得HTTP代理就像是一个魔法盒子,让你在数字世界中自由穿梭?但是,就像所有的魔法物品一样,它也会偶尔出点小状况。今天,我们就来一起探讨一下Linux系统中HTTP代理的常见问题…

手机网站你了解的外贸网站如何建站

文章目录 一、FunASR二、上代码(队列解决线程并发问题)三、测试 一、FunASR 在我的另一个博客有介绍FunASR,并且进行了语者分离,不过最近FunASR自带了语者分离,挺好挺好,但是一直看社区就是大家都用python写&#xff…