fdbus和proto编译

news2024/11/24 11:46:13

1. 下载protobuf和FDBUS

1.下载
FDBUS需要用到protobuf,所以需要提前安装好protobuf。

protobuf下载地址

https://gitee.com/it-monkey/protocolbuffers/

fdbus下载地址

https://gitee.com/jeremyczhen/fdbus

2. Windows编译

生成vs工程

打开CMake,没有的话先下载安装一个

指定路径,设置关闭zlib

protobuf_WITH_ZLIB=OFF
CMAKE_INSTALL_PREFIX=install
Configure,Generate后生成vs工程
在这里插入图片描述

vs2017编译

用vs2017打开build/protobuf.sln,构建project INSTALL,得到proto库

生成vs工程

打开CMake,没有的话先下载安装一个

指定路径,添加proto安装路径

SYSTEM_ROOT=D:\chenchao\workspace\protocolbuffers-master\cmake\build\install

修改CMAKE_INSTALL_PREFIX=install

将D:\chenchao\workspace\protocolbuffers-master\cmake\build\install\bin添加为环境变量

Configure,Generate后生成vs工程

在这里插入图片描述

vs2017编译

参考指导文档

https://fdbus.readthedocs.io/en/latest/readme.html#how-to-build

用vs2017打开build/fdbus.sln,构建project INSTALL,得到fdbus库
在这里插入图片描述

3. Linux编译

protocolbuffers-master\cmake\文件夹下建build文件夹

cmake ..
make

fdbus-master\cmake\文件夹下建build文件夹
修改CMakeLists.txt
151行左右改为静态编译
set(LIB_BUILD_TYPE "STATIC")
空白处追加
set(CMAKE_CXX_FLAGS "-fPIC")

cmake ..
make

4. Android编译

参考https://blog.csdn.net/chen_227/article/details/131759730?spm=1001.2014.3001.5502 的步骤2

主要是修改build_assimp.batbuild.bat
proto的如下

@REM @echo off  
cls  
  
REM *NOTE* Change these based on   
REM SET ASSIMP_DIR=assimp-5.0.0
SET OUTPUT_DIR=build-arm 
SET ANDROID_PATH=D:/chenchao/workspace/Android/Android/Sdk
SET NDK_PATH=D:/chenchao/workspace/Android/Android/Sdk/ndk/23.1.7779620
SET NDK_TOOLCHAIN=%ANDROID_PATH%/ndk/android-toolchain-16-llvm-arm
SET CMAKE_TOOLCHAIN=%NDK_PATH%/build/cmake/android.toolchain.cmake  
SET CMAKE_PATH=%ANDROID_PATH%/cmake/3.22.1
  
REM *NOTE* Careful if you don't want rm -rf, I use it for testing purposes.  
del \F \S \Q %OUTPUT_DIR%
mkdir %OUTPUT_DIR%  
  
REM pushd doesn't seem to work ):<  
cd %OUTPUT_DIR%  
  
if not defined ORIGPATH set ORIGPATH=%PATH%  
SET PATH=%CMAKE_PATH%/bin;%ANDROID_PATH%/tools;%ANDROID_PATH%/platform-tools;%ORIGPATH%;%NDK_TOOLCHAIN%/bin;
  
%CMAKE_PATH%/bin/cmake.exe -GNinja -DCMAKE_TOOLCHAIN_FILE=%CMAKE_TOOLCHAIN%  -DANDROID_ABI="armeabi-v7a"  -DANDROID_NDK=%NDK_PATH% -DCMAKE_MAKE_PROGRAM=%CMAKE_PATH%/bin/ninja.exe -DCMAKE_BUILD_TYPE=Release  -DANDROID_NATIVE_API_LEVEL=24 -DANDROID_FORCE_ARM_BUILD=TRUE -DCMAKE_INSTALL_PREFIX=install -DANDROID_STL=c++_static -DCMAKE_CXX_FLAGS=-Wno-c++11-narrowing -DANDROID_TOOLCHAIN=clang -Dprotobuf_BUILD_TESTS=OFF ../
  
%CMAKE_PATH%/bin/cmake.exe --build .

cd ..

fdbus的CMakeLists.txt参考步骤3做静态编译修改
fdbus的如下

@REM @echo off  
cls  
  
REM *NOTE* Change these based on   
REM SET ASSIMP_DIR=assimp-5.0.0
SET OUTPUT_DIR=build-arm 
SET ANDROID_PATH=D:/chenchao/workspace/Android/Android/Sdk
SET NDK_PATH=D:/chenchao/workspace/Android/Android/Sdk/ndk/23.1.7779620
SET NDK_TOOLCHAIN=%ANDROID_PATH%/ndk/android-toolchain-16-llvm-arm
SET CMAKE_TOOLCHAIN=%NDK_PATH%/build/cmake/android.toolchain.cmake  
SET CMAKE_PATH=%ANDROID_PATH%/cmake/3.22.1
  
REM *NOTE* Careful if you don't want rm -rf, I use it for testing purposes.  
del \F \S \Q %OUTPUT_DIR%
mkdir %OUTPUT_DIR%  
  
REM pushd doesn't seem to work ):<  
cd %OUTPUT_DIR%  
  
if not defined ORIGPATH set ORIGPATH=%PATH%  
SET PATH=%CMAKE_PATH%\bin;%ANDROID_PATH%\tools;%ANDROID_PATH%\platform-tools;%ORIGPATH%;%NDK_TOOLCHAIN%\bin;
  
%CMAKE_PATH%\bin\cmake.exe -GNinja -DCMAKE_TOOLCHAIN_FILE=%CMAKE_TOOLCHAIN%  -DANDROID_ABI="armeabi-v7a"  -DANDROID_NDK=%NDK_PATH% -DCMAKE_MAKE_PROGRAM=%CMAKE_PATH%\bin\ninja.exe -DCMAKE_BUILD_TYPE=Release  -DANDROID_NATIVE_API_LEVEL=24 -DANDROID_FORCE_ARM_BUILD=TRUE -DCMAKE_INSTALL_PREFIX=install -DANDROID_STL=c++_static -DCMAKE_CXX_FLAGS=-Wno-c++11-narrowing -DANDROID_TOOLCHAIN=clang ../
  
%CMAKE_PATH%\bin\cmake.exe --build .

cd ..

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

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

相关文章

(vue)vue项目中引入外部字体

(vue)vue项目中引入外部字体 效果&#xff1a; 第一步 放置字体包&#xff0c;在assets下创建一个fonts文件夹&#xff0c;放入下载的字体文件 第二步 创建一个font.css文件用于定义这个字体包的名字 第三步 在App.vue的css中将这个css文件引入 第四步 页面使用 font-famil…

NumPy 专业人士应该掌握的 45 个技能

一、说明 NumPy&#xff08;或Numeric Python&#xff09;是每个数据科学和机器学习项目的核心。 整个数据驱动的生态系统在某种程度上依赖于NumPy及其核心功能。这使它成为 Python 有史以来最重要和改变游戏规则的库之一。 鉴于NumPy由于其无与伦比的潜力而在工业界和学术界具…

java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

文章目录 一、记录文件相关操作方法二、代码1.读取路径返回List\<File>2.读取路径返回List\<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代码 1.读取路径返回List<File> import org.slf4j.LoggerFactory; import org.slf4j.Logger;impo…

【学会动态规划】按摩师(11)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

es通过rest接口_search、_delete_by_query查询与删除数据

1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式&#xff1a; {"query": {"wildcard": {"accountID": {"value": "v*"}}} }postman请求截图&#xff1a; 2、使用Rest接口删除数据 …

基于Lucene实现校园搜索引擎——太强搜索

完整资料进入【数字空间】查看——搜索"writebug" 实验环境 win10 一、实验内容 综合运用搜索引擎体系结构和核心算法方面的知识&#xff0c;基于开源资源搭建搜索引擎&#xff0c;具体包括如下几点&#xff1a; 抓取清华校园网内绝大部分资源&#xff0c;并且进行…

【NLP】温和解读:transformer的核心思想

变压器模型及其关键组件的概述。 一、介绍 在这篇博文中&#xff0c;我将讨论本世纪最具革命性的论文“注意力是你所需要的一切”&#xff08;Vaswani et al.&#xff09;。首先&#xff0c;我将介绍自我注意机制&#xff0c;然后介绍变形金刚的架构细节。在之前的博客文章《从…

【数据分析 最火 全集干货】Anaconda的安装及使用

关于我的专栏&#xff1a; 接下来会有许多关于“数据分析”的文章哦&#xff0c;记得看哦&#xff01;&#xff01;&#xff01; Python最详细最全面基础合集_adaptation_T_C的博客-CSDN博客 有兴趣&#xff0c;需要 的小伙伴可以免费订阅哦&#xff01;&#xff01;&#x…

阿里 P8 架构师 20 年经验!总结成微服务设计企业架构转型之道

前言 本文涉及两个方面的知识体系&#xff0c;即企业架构知识体系和软件架构知识体系。 企业架构和软件架构虽然都与 IT 相关&#xff0c;但其知识体系是完全不同的两个领域。一般而言&#xff0c;搞企业架构的人士不明白软件架构的细节和实现&#xff0c;而从事软件架构的架…

如何恢复损坏/删除的 Word 文件

有关如何修复不可读的 Microsoft Word 文件或 Rich Text 文件中的文本的分步说明。这些说明有助于从损坏的*.doc、*.docx、*.dot、*.dotx、*.rtf文件&#xff08;任何版本和大小&#xff09;中提取文本&#xff0c;只需单击几下&#xff1a; 从此处下载奇客数据恢复 &#xff…

React AntDesign写一个导出数据的提示语 上面有跳转的路径,或者点击知道了,关闭该弹层

效果如下&#xff1a; 代码如下&#xff1a; ForwardDataCenterModal(_blank);export const ForwardDataCenterModal (target?: string) > {let contentBefore React.createElement(span, null, 数据正在处理中&#xff0c;请稍后前往);let contentAfter React.creat…

【如何训练一个中译英翻译器】LSTM机器翻译模型训练与保存(二)

系列文章 【如何训练一个中译英翻译器】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 目录 系列文章1、加载训练集2、训练集数据处理3、网络搭建4、启动训练5、模型保存6、模型加载与推理 基于LSTM训练一个翻译器&#xff0c;要怎么做呢&#xff1f;其实很简单&am…

大厂案例 - 实时分析引擎

文章目录 概述内容收获思路建议 概述 网络安全态势越来越复杂&#xff0c;传统的基于单点的防护和攻击检测系统在应对现代网络攻击方面有着很大的局限性。 基于大数据平台&#xff0c;通过流式实时分析技术可以对全局网络空间进行实时的分析和异常检测&#xff0c;解决单点很…

2023年7月杭州/武汉/深圳制造业产品经理NPDP认证招生

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

独立开发者必备的29个开源React后台管理模板

React Web应用程序开发管理后台可能非常耗时&#xff0c;这和设计所有前端页面一样重要。 以下是收集的近几年顶级React.js管理模板列表。 这些模板确实很有价值&#xff0c;使开发人员更容易构建应用程序后端的用户界面。 此外&#xff0c;它们将帮助您完善网站的管理后台&…

Clion开发STM32之W5500系列(综合实验)

说明 此为w5500模块的综合实验测试模块,包含dhcp、dns、ntp以上三个模块的驱动参考之前的文章&#xff0c;本篇不做说明.使用的开发芯片 stm32f103vet6系列,外设接口使用的spi2 实验内容: 通过dhcp动态获取ip,通过dns解析NTP服务域名的ip通过NTP服务ip获取时间 w5500配置驱…

【oracle数据库】单行函数

Oracle数据库中的单行函数 1.字符函数2.数值函数3.转换函数4.判空函数5.条件取值 1.字符函数 --length()求字符串长度 select length(aslkd) from dual --substr(,起始点,截取长度) 起始点从1开始 截取字符串 select substr(asd,2,2) from dual --concat(,)字符串拼接 sele…

两个小封装电机驱动芯片:MLX813XX、A4950

一&#xff0e;MLX813XX MELEXIS的微型电机驱动MLX813XX系列芯片集成MCU、预驱动以及功率模块等能够满足10W以下的电机驱动。 相对于普通分离器件的解决方案&#xff0c;MLX813XX系列电机驱动芯片是一款高集成度的驱动控制芯片&#xff0c;可以满足汽车系统高品质和低成本的要…

[答疑]岛上没人穿鞋,卖鞋的愿景是什么

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 Kris 2023-7-6 19:55 上次给我们批作业您举了个例子&#xff0c;说卖鞋给岛上没人穿鞋&#xff0c;觉得您的解读很新颖&#xff0c;不过当时没听太明白&#xff0c;翻您的书貌似没有这个内容。…

分布式存储在云环境下的应用和部署

随着互联网数据规模越来越大&#xff0c;并发请求越来越高&#xff0c;传统的关系数据库系统在性能、价格、可扩展性方面已经不能很好地满足需求。谷歌、亚马逊等互联公司率先在后台基础设施中引入超大规模分布式存储系统&#xff0c;用来解决海量数据的存储问题。与传统的集中…