首页
学习
活动
专区
圈层
工具
发布

Protobuf在Cmake中的正确使用

一般来说,protobuf经常搭配Cmake使用,Cmake有官方的modules,可以通过简单的几个命令protobuf_generate_cpp来生成对应的.pb.cc和.pb.h。...(这个例子取自Yu的一篇博文) 也想过把他俩放到同一个目录…然后bar.proto中import的代码就要修改,虽然这样可以,但显然是不适合大型的项目。...,这里的import类似于C++中的include,但是这里的import又可以相互引用,例如上述的status_handler.proto也引用了mediapipe_options.proto。...另外,不同目录内的.cc文件会引用相应目录生成的.pb.h文件,我们需要生成的.pb.cc和.pb.h在原始的目录中,这样才可以正常引用,要不然需要修改其他源代码的include地址,比较麻烦。...CLion中Cmake来编译proto生成的.pb.cc和.pb.h不在原始目录,而是集中在cmake-build-debug(release)中,我们额外需要将其中生成的.pb.cc和.pb.h文件移动到原始地址

2.5K20

关于CMake中引号用法的说明

CMake中引号的用法在CMake中定义和使用变量时,可以使用引号也可以不使用引号,并且它们会产生不同的结果。定义变量时使用引号例1:set(TITLE learn cmake quotes!)...可以看到字符串中间的空格没了,实际上,当我们不用引号定义变量的时候,相当于我们定义了一个包含多个成员的字符串数组,对于例1是:learn, cmake和quotes!。...因为此时${TITLE}还是一个数组,我们用"${TITLE}"这种形式的时候,表示要让CMake把这个数组的所有值当成一个整体,而不是分散的个体。...于是,为了保持数组的含义,又提供一个整体的表达方式,CMake就会用;把这数组的多个值连接起来。...总结引号对于CMake中变量的定义,其功能主要是当有空格的时候,区别变量时一个数组还是纯粹的字符串;在使用的时候,对于普通字符串,加不加引号没什么区别,而对于数组,加引号会将数组以分号间隔输出,而不加引号则是直接拼接数组

58110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 )

    , 项目位置 , 解决方案名称 ; 创建完毕的 CMake 项目如下 : 运行解决方案 , 项目运行成功 ; 二、在 Visual Studio 的 CMake 项目中配置 OpenCV 库 -...--- 1、CMakeLists.txt 配置文件说明 在 Visual Studio 的 CMake 项目中配置 OpenCV 库 , 主要是在 CMakeLists.txt 中进行配置的 , 该配置文件在源码目录中..., 不是工程根目录的文件 ; 在 根目录下的 CMakeLists.txt 是 顶层 CMake 项目文件,在此处执行全局配置并包含子项目。..., 其初始内容如下 : # CMakeList.txt: OpenCV_Demo 的 CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。...中安装 OpenCV 库 ) 中 , 在 Windows 平台的 Y:\001_DevelopTools\032_OpenCV\opencv 目录 , 安装了 OpenCV 库 , 其头文件在如下两个目录中

    2.8K20

    破局Cmake中的PRIVATE,PUBLIC,INTERFACE

    前言 最近看了很多项目的代码,代码是用cmake编译的,由于各种库之间链接关系错综复杂,加上PRIVATE,PUBLIC,INTERFACE属性值,我在添加代码的时候总会遇到稀奇古怪的编译的问题,网上看了很多文章...main.c) target_link_libraries(CPP B) 用图来表示代码就如下,CPP调用B中addB,B中的addB调用addA 最后运行的结果 main addB addA 这例子简单吧...,我们进一步来解读一下CMakeLists.txt,红色为传递过来的属性 查看对应的cmake的编译中间文件,可以进一步验证我们的判断,正好和对应的属性对应。...3.2 main中能否调用addA 可以看到CPP拥有target_include_directories(CPP PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includeA...(CPP main.c) target_link_libraries(CPP B) 解读一下CmakeLists.txt,红色为传递过来的属性 和3.2中最大的差异就是CPP中includeA没了,那

    1.4K30

    关于CMake中不同变量的用法与总结

    CMake中的变量CMake中变量的类型有多种:通过set设置的普通变量和缓存变量、环境变量、数组变量等等,由于CMake在生成的过程中会加载缓存的关系,因此用法不一样。...和编程语言中局部变量的用法类似,这个变量会屏蔽CMake缓存中的同名变量,(类似局部变量屏蔽全局变量)。但是这条语句不会改变缓存中的var变量。...还有一种方法能够设置CACHE变量,就是通过cmake命令的-D选项,可以添加一个CACHE变量。...CACHE作用如下:如果缓存中存在同名的变量,根据FORCE来决定是否写入缓存:如果没有FORCE,这条语句不起作用,使用缓存中的变量;如果有FORCE,使用当前设置的值。...- 注意,如果是FORCE,也能修改-D选项设置的CACHE变量,所以有可能传入的生成命令选项是无效的。如果缓存中不存在同名的变量,则将这个变量写入缓存并使用。

    60000

    ROS2中CMake编译选项的设置

    指定使用的C++版本 set(CMAKE_CXX_STANDARD 17) 可以根据需求设置11, 14, 17, 20等等C++版本。...也就是代码中不使用绝对地址,而使用相对地址,因此加载器可以将它加载到内存任意位置并执行。如果不使用-fPIC,产生的代码中包含绝对地址。...-fvisibility=default or hidden 默认情况下,设置ELF镜像中符号的可见性为public或hidden。缺省值是default。...选项也可不单独设置,直接设置后面提到的编译类型即可 设置编译类型 在编译命令中指定,如下所示: colcon build --cmake-args '-DCMAKE_BUILD_TYPE=RelWithDebInfo...补充说明: DCMAKE_BUILD_TYPE中的配置与g++编译选项之间的关系: DCMAKE_BUILD_TYPE是Cmake配置层面上的东西。

    2.2K00

    cmake:macro,function中ARGV,ARGN参数的区别

    https://blog.csdn.net/10km/article/details/83027824 cmake中的宏(macro)和函数(function)都支持动态参数 变量ARGC...记录传入的参数个数 变量ARGV0,ARGV1,...顺序代表传入的参数 变量ARGV则是一个包含所有传入参数的list 变量ARGN也是一个包含传入参数的list,但不是所有参数,而是指macro.../function声明的参数之后的所有传入参数 写一个小程序就可以验证: # 定义一个宏,显式声明了两个参数hello,world macro(argn_test hello world) MESSAGE...ARGV2=${ARGV2}) MESSAGE(STATUS ARGV3=${ARGV3}) endmacro() # 调用宏时传入4个参数 argn_test(TOM JERRY SUSAN BERN) cmake...脚本执行输出结果,ARGN为声明参数之后的所有参数 -- ARGV=TOMJERRYSUSANBERN -- ARGN=SUSANBERN -- ARGV0=TOM -- ARGV1=JERRY --

    1.8K10

    c比python快多少倍_python和c++哪个简单

    在大型工程项目中,经常会遇到多语言联合编程的情况,举个例子: 在一个远端控制系统中,前端Web使用html+css+js;后端采用python-flask作为服务端,底层控制采用C/C++ 这是因为不同编程语言有各自的适用场景和语法特性...因此Python不适合用于底层算法的开发,应用在上层应用中作粘合剂或进行智能领域的研究比较占优;C/C++则适合用于底层控制算法编程。...接着对于vscode,在c_cpp_properties.json中添加python的include目录 error LNK2019: 无法解析的外部符号 "__declspec(dllimport...) class boost::python::xxx 解决方案:库链接出错,对于静态编译的Boost::python库需要在C++文件中声明静态编译宏 #define BOOST_PYTHON_STATIC_LIB...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.1K30

    解决TensorFlow中的UnimplementedError:未实现的操作

    解决TensorFlow中的UnimplementedError:未实现的操作 摘要 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...今天我们来探讨一个在使用TensorFlow时可能会遇到的问题:UnimplementedError。这个错误通常在调用某些未实现的操作时出现,会对我们的模型训练和部署产生影响。...引言 在深度学习的开发过程中,TensorFlow是一个非常强大的工具。然而,在使用TensorFlow时,我们可能会遇到各种各样的错误,其中之一就是UnimplementedError。...UnimplementedError是TensorFlow中一个常见的错误类型,通常在尝试调用未实现的操作时抛出。这可能是由于使用了不被支持的硬件,或者使用了不支持的TensorFlow版本。...2.2 TensorFlow版本不兼容 某些操作可能只在特定版本的TensorFlow中实现。如果使用了不兼容的版本,也可能会导致这个错误。

    37210

    药物发现中的深度学习

    论文全面总结了人工智能方法在药物发现中的应用,并针对Covid-19的药物发现过程进行了详细的分析。 1 摘要 人工智能的发展模仿了人脑的工作原理来理解现代问题。...图1 深度学习在药物发现和生物标志物开发中的潜力。每个药物发现时期的深度学习算法应用,包括临床评估、生物过程结合、化学修饰和开发、化合物的新合成。...深度生成算法(deep generative algorithm, DGA)模型是一种基于无监督学习结构的模型,可以从高维输入数据源中提取未标记的数据。...图3 深度学习算法在药物发现中的应用,包括从头药物设计、理化性质预测、药物亲和力预测、QSAR、ADME性质预测、毒性分析,以及最新应用于SARS-CoV-2的药物发现。...该模型在Tox21数据挑战的所有工具中处于领先地位,成功完成了15项任务中的8项。在Tox-21挑战之后,研究者开始了更广泛的探索,以发现更小的毒性结构。

    58320

    JMC | 药物发现中的迁移学习

    作者/编辑 | 王建民 导读 药物发现工作中可用于训练计算模型的数据集通常很少。标记数据的稀疏可用性是人工智能辅助药物发现的主要障碍。解决该问题的一种方法是开发可以处理相对异构和稀缺数据的算法。...迁移学习是一种机器学习方法,可以利用其他相关任务中现有的,可推广的知识来学习带有少量数据的单独任务。深度迁移学习是药物发现领域最常用的迁移学习模型。本文概述了迄今为止转移学习和药物发现的相关应用。...4 药物发现中的迁移学习 迁移学习最早是在20世纪90年代提出的,但首次应用于药物发现是在2010年。直到过去几年深度迁移学习方法被提出并应用于药物发现,才引起人们的重视。...此外,目前还没有合适的基准数据集来评估迁移学习在药物发现中的应用,而且由于迁移学习场景中的数据规模较低,过拟合问题应该备受关注。此外,包括深入讨论迁移学习方法与药物发现相关的出版物也很少。...随着周期性的生成和验证与新的验证负化合物迭代添加,这种策略可能会更强大。某种程度上,这与主动学习类似,主动学习是一种迭代查询最重要的未标记样本的算法,然后为下一个训练周期标记样本,以指导性地改进模型。

    1.1K40

    (译)浅谈 Kubernetes 中的服务发现

    Kubernetes 服务发现是一个经常让我产生困惑的主题之一。本文分为两个部分: 网络方面的背景知识 深入了解 Kubernetes 服务发现 要了解服务发现,首先要了解背后的网络知识。...接下来聊聊服务发现。 深入了解 Kubernetes 服务发现 服务发现实际上包含两个功能点: 服务注册 服务发现 服务注册 服务注册过程指的是在服务注册表中登记一个服务,以便让其它服务发现。 ?...Service 对象注册到集群 DNS 之中后,就能够被运行在集群中的其它 Pod 发现了。...要使用服务发现功能,每个 Pod 都需要知道集群 DNS 的位置才能使用它。因此每个 Pod 中的每个容器的 /etc/resolv.conf 文件都被配置为使用集群 DNS 进行解析。...首先 Service 对象的配置是全集群范围有效的,另外还会再次说到 Endpoints 对象。我们要在回顾中发现他们各自在这一过程中的职责。

    80530

    微服务架构中的服务发现

    代理扮演服务器端发现负载均衡器的角色。为了向服务发出请求,客户端通过代理使用主机的IP地址和服务的分配端口路由请求。然后,代理将请求透明地转发到在集群中某处运行的可用服务实例。...当Eureka服务器启动时,它会查询DNS以检索Eureka群集配置,查找其对等体,并为其分配一个未使用的Elastic IP地址。...系统组件使用查询API来发现可用的服务实例。 有两种主要的服务发现模式:客户端发现和服务端发现。在使用客户端服务发现的系统中,客户端查询服务注册表,选择可用实例并发出请求。...在使用服务器端发现的系统中,客户端通过路由器发出请求,路由器查询服务注册表并将请求转发到可用的实例。 服务实例有两种主要方式从服务注册表中注册和注销。...在某些部署环境中,您需要使用Netflix Eureka,etcd或Apache Zookeeper等服务注册表设置自己的服务发现基础设施。在其他部署环境中,内置服务发现。

    2.4K80

    综述:药物发现中的机器学习

    来自印度 B V Raju 理工学院的研究人员发表综述,讨论了药物发现中的机器学习,归纳总结了应用于制药领域的各类机器学习技术,并指出当前该领域发展的难点,以及未来发展方向。...机器学习算法在药物发现过程中的精确训练、验证和应用,简化复杂的协议,已经取得了不少成果。大多数药物设计过程中都引入了 ML 技术,以减少时间成本和人工干预。...用于药物发现电子资源中的 ML 图示:药物发现平台电子资源中的机器学习。(来源:论文) 泛检测干扰筛查中的 ML (PAINS) 可以根据要求从 PAINS 数据库访问泛检测信息。...NP Scout 在查询分子来源预测中的应用,可以提供有关其天然产物来源的信息,并可能成为基于天然产物的药物发现过程的重要组成。...透明度问题是药物发现的另一个挑战。在不同分类模型中的决策规则是不清楚的。在药物开发中,机器学习模型需要理解多种机制来解释结果,并且需要多个组合特征来提高对可解释性的信任度 。

    55310

    解决TensorFlow中的FailedPreconditionError:未初始化的变量

    解决TensorFlow中的FailedPreconditionError:未初始化的变量 摘要 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...在本文中,我们将深入探讨并解决TensorFlow中的一个常见错误:FailedPreconditionError。这个错误通常与未初始化的变量有关。...引言 在使用TensorFlow进行深度学习模型开发时,FailedPreconditionError是一个常见的错误。它通常发生在尝试使用未初始化的变量时。...表格总结 错误原因 解决方法 未初始化变量 在使用变量之前调用初始化操作 初始化操作未执行 确保初始化操作在会话中成功执行 重置计算图后 重新定义变量并运行初始化操作 未来展望 随着深度学习技术的发展...掌握解决这些常见问题的方法,将有助于您在深度学习领域走得更远。 参考资料 TensorFlow官方文档 深度学习中的常见错误与解决方案 希望这篇文章对您有所帮助!

    50510

    捉虫记 | 发现OpenCV4.0中的

    01 起因 微信上有个OpenCV研习社的会员告诉运行模板匹配的代码会程序崩溃,无法执行,还给我发了截屏,我建议他先debug,过了一会儿他告诉我说:“发现imshow这句代码有问题”,我感觉很奇怪,...就让他把整个工程文件都发我啦,我今天下午的时候打开看了一下他的代码,发现没有什么问题,我一运行的时候就得到下面的错误: ?...02 实锤 于是我就把上面的错误copy了一下,去OpenCV官方论坛里面去搜索一通,发现居然在2018年的十一月份,OpenCV4.0发布不久就有人遇到了这个问题,OpenCV社区很大方的承认说这个是一个...我还跑到OpenCV4.0官方的教程主页,发现它们的模板匹配结果Mat对象还是以浮点数类型显示,估计不少人都被带到沟里面去了… 03 复现与解决 复现OpenCV4.0的这个BUG,只需在VS2015.../VS2017中输入如下几行代码: #include #include using namespace cv; using namespace

    64040

    dubbo 2.7中的应用级服务发现

    背景 本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应用级服务发现的相关介绍可以参考之前的文章《dubbo应用级服务发现初体验》,这里不再赘述。...读者反馈他们在基于dubbo 2.7应用级服务发现开发dubbo网关,根据文章《dubbo应用级服务发现初体验》写了demo调用时报no provider的错误。...问题定位 随手拿了一个平时测试用的dubbo demo工程(注意不是dubbo源码中的demo),发现确实注册不到zookeeper上,接着测试了不同的版本,发现都注册不了,在2.7.5 ~ 2.7.11...恰好本次调试是基于一个demo工程,《dubbo应用级服务发现初体验》文章是直接在dubbo源码中修改demo,源码中已经把依赖都引入了 更进一步 其实是个小问题,但对用户来说挺困惑的,为什么没有报错但也没法注册服务...既然2.7.x的应用级服务发现不再更新,下次写一篇分析3.0版本的应用级服务发现源码的文章吧~ --- 搜索关注微信公众号"捉虫大师",后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践。

    72831

    mBio minireview: 海洋中的真菌:现存的未解之题

    海洋中有哪些真菌 海洋中发现的很多真菌在陆地生态系统中也能被发现,因此海洋真菌学领域的一个挑战是如何确定哪些真菌是真正的“海洋”真菌。 对海洋真菌多样性和分布的了解,在很大程度上取决于采用的方法。...早期研究主要集中于植物和藻类相关的物种(可形成明显的宏观生殖结构)及培养基中易于培养的物种。采样主要也集中在近岸。近年来,基于DNA的技术得以在更广泛的栖息地范围内研究稀有的及未培养的真菌。...海洋和水生真菌在相对较高的分类级别也还含有大量新的和未描述的物种。...这些发现挑战了目前认为细菌和古生菌是海洋表面异养微生物生物量的主要贡献者的观点。真菌生物量在海洋生态系统碳通量模型(carbon flux models)中的意义仍是一个亟待解决的问题。...在墨西哥湾原油泄漏之后评估了沿岸沉积物的微生物多样性,发现真菌在受原油影响的底栖生物群落中占主导地位,其中包括很多已知的可降解碳氢化合物的类群。

    1.6K31
    领券