Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用CMake查找Protobuf软件包

用CMake查找Protobuf软件包
EN

Stack Overflow用户
提问于 2022-05-12 07:52:21
回答 1查看 495关注 0票数 0

我似乎无法让CMake不断地找到我的原生质包。我想将protobuf源代码包括在内,并将其构建为我项目的一部分。我正在使用原产3.15.8protobuf c 1.3.3 (用作控制示例)。

这是示例的目录设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- CMakeLists.txt
- deps/
       - CMakeLists.txt
       - protobuf/            # The protobuf 3.15.8 repository
       - protobuf-c/          # The protobuf-c 1.3.3 repository
- target/
         - CMakeLists.txt

CMakeLists.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cmake_minimum_required(VERSION 3.15)
project(PROTOBUF_IMPORT_FAIL)
add_subdirectory(deps)
add_subdirectory(target)

deps/CMakeLists.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_subdirectory(protobuf/cmake)
set(Protobuf_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/protobuf/cmake/lib")
set(Protobuf_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/protobuf/src")
set(Protobuf_PROTOC_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/protobuf/cmake/libprotoc.a")
add_subdirectory(protobuf-c/build-cmake)

target/CMakeLists.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set(Protobuf_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/../deps/protobuf/cmake/lib")
set(Protobuf_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}../deps/protobuf/src")
message("This is the problem!")
FIND_PACKAGE(Protobuf REQUIRED)

一旦一切就绪,我就可以尝试运行cmake

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir build
cd build
cmake ..

不幸的是,这最终给了我以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMake Error at /usr/local/Cellar/cmake/3.23.0/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.23.0/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/Cellar/cmake/3.23.0/share/cmake/Modules/FindProtobuf.cmake:650 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  target/CMakeLists.txt:7 (FIND_PACKAGE)

如果有帮助的话,下面是一些环境信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ uname -a
Darwin coop-mac 21.4.0 Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64 x86_64
$ cmake --version
cmake version 3.23.0

protobuf-c也是套餐,但它实际上是成功的。为什么从目标中寻找它却找不到它,我如何修复它?

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 14:26:10

find_package用于查找已安装的库。安装的库通常是由cmake附带的脚本(所谓的find-模块)找到的,或者是因为库提供了配置脚本(比如profobuf config.cmake或profobuf- script ts.cmake)。后者是在库构建和安装之后生成的。这可能是第二个配置步骤成功的原因。

您不希望链接到已安装的库,而是自己构建库。所以,您所需要做的就是使用add_subdirectory添加子文件夹(不要添加cmake子文件夹,它根据protobuf是不推荐的)。之后,您可以使用target_link_libraries将protobuf链接到您的目标,而无需使用find_package

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72218667

复制
相关文章
Archiva 2.2.3 安装运行的时候出现协议版本错误
但是远程仓库不能同步数据到你的本地仓库中, 同时服务器上有上面的错误。但是 Archiva 的安装和运行是没有问题的。
HoneyMoose
2019/04/16
8430
JeecgBoot升级Nacos至 2.2.3 版本解决raft漏洞问题
Nacos是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序。
JEECG
2023/07/17
5780
Android Studio Gradle问题集合
1.开发环境:android studio,项目gradle文件添加ndk代码后配置构建出现问题 externalNativeBuild{ ndkBuild{ path "$projectDir/jni/Android.mk" } } 问题:Could not find method externalNativeBuild() for arguments 解决方案:gradle is set to at least version 2.2.0:,gradle版本最低需要2.2
用户1148881
2018/01/15
1.6K0
Android Studio Gradle问题集合
刚装上的打印机就无法打印,显示为脱机状态,看我如何快速解决
从多次的经验来看,我认为直到目前为止,WSD协议,仍旧是个灾难,虽然它的初衷是方便安装打印机,几乎全自动的安装也确实挺不错,但是时不时无法打印却实在是讨人嫌,很显然,安装再简便又有什么用呢。
IT狂人日志
2022/12/08
8970
刚装上的打印机就无法打印,显示为脱机状态,看我如何快速解决
Silverlight:xap包(或本地缓存)下载版本更新的解决思路
在SL开发中,通常会将项目按模块分成多个xap实现按需下载,但是由于浏览器的缓存,就算某个模块代码修改过并重新发布到服务器,如果这个xap已经在浏览器缓存中,实际加载时,仍然有可能调用的是本地缓存,而
菩提树下的杨过
2018/01/23
1K0
Silverlight:xap包(或本地缓存)下载版本更新的解决思路
错误代码502,网页无法打开?教你如何解决!
在使用互联网的过程中,我们时常会遇到各种错误代码,其中502错误代码是最为常见的一种。502 Bad Gateway错误表示,网关或代理服务无法将请求发送到上游服务器。那么,错误代码502是什么意思?
德迅云安全--陈琦琦
2023/10/08
10.1K0
修复 Ubuntu 无法进行版本更新的错误
将 Ubuntu 服务器从 18.04 升级到 20.04 , 在执行 do-release-upgrade 时提示无法检查新版本, 完整的错误信息如下:
beginor
2021/01/12
7.3K0
S如何解决安卓DK无法下载Package问题
安装一些用户Android SDK后。打开Android SDK Manager下载API当总是显示“Done loading packages”却迟迟不能前进。自己也出现了这样的情况。把自己成功解决此问题的方法分享给大家。 方法/步骤
全栈程序员站长
2022/07/06
7260
[PHP]解决500错误问题-nginx以及fpm没有任何错误日志
但是php-fpm下定义的www-error.log的错误日志以及nginx定义的error日志都没有任何显示
唯一Chat
2021/03/27
2.8K0
解决GitHub文件无法下载的问题
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
恬静的小魔龙
2022/08/07
13.9K0
解决GitHub文件无法下载的问题
Mac版AppStore无法下载、升级错误处理
在mac版本AppStore下载软件的时候,有时会出现“This item is temporarily unavailable, Try again later”错误提示,当然等一会儿或者不断重新尝试都是无法下载的。 StackOverFlow上找到一个解法: Mac App Store --> Store --> Check for Unfinished Downloads... 通常是因为软件原来下载的时候,跟现在登录的账号不是同一个并且不再同一个国家,所以当前国家的AppStore中很可能
俺踏月色而来
2018/06/20
7650
如何解决缓存雪崩、缓存穿透和缓存击穿?
上一期视频,我跟大家聊了我对缓存雪崩、缓存穿透和缓存击穿的理解。那官方又是如何解释的呢?另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在我的煮叶简介中找到。
Tom弹架构
2022/08/22
5650
如何解决缓存雪崩、缓存穿透和缓存击穿?
解决wp-super-cache无法(预)缓存问题
突然发现 WP-SUPER-CACHE 无法预缓存,点击【立即加载预缓存】后没有任何效果,并且垃圾回收定时器也失效了,缓存文件全是几天前的,感觉很奇怪! 闲下来的时候,突然想起前些天对博客做的一些优化
张戈
2018/03/23
1.7K0
解决wp-super-cache无法(预)缓存问题
使用MDS无法下载macOS解决办法
最近macOS更新了,我之前制作的U盘部署版本太老了,每次都要再更新一次,所以我重新通过MDS制作U盘
繁华是客
2023/03/03
8030
Android Studio升级到2.3的编译问题解决办法
2017年3月2日,谷歌发布了Android Studio 2.3,想必不少朋友已经兴冲冲把Android Studio更新到了2.3。博主这几天也赶紧升级到Android Studio 2.3,孰料升级之后发现原来的项目反而变得不能编译了。2.3升级完毕后,Android Studio跳出下面一个提示框,说是为了充分发挥新特性的优势,建议开发者把Gradle升级到3.3。
aqi00
2019/01/18
6690
IDM无法下载.ts文件解决方案
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161222.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
6.4K1
什么是缓存击穿、缓存穿透、缓存雪崩?如何解决?
概念:指缓存和数据库中都没有用户想要查询到的数据,并且不断进行请求,造成数据库承载部分压力。
闫同学
2022/10/31
5060
什么是缓存击穿、缓存穿透、缓存雪崩?如何解决?
redis缓存雪崩 缓存穿透 缓存击穿如何解决_缓存击穿问题
每一个put进来的值会经过几个hash函数运算(预测插入数据的数量和容错率,系统自动推断出来设置几个hash函数合适),然后映射到响应为位上,将响应位的bit置为1。当查询值是否在布隆过滤器中的时候,将该值与上述hash函数运算,如果各个位置的bit均为1,则判断该值极有可能在布隆过滤器中。
全栈程序员站长
2022/09/21
7250
redis缓存雪崩 缓存穿透 缓存击穿如何解决_缓存击穿问题
Android:解决debug版本无法运行的问题
在用Android Studio做开发时,如果将build之后的app-debug版本发给用户,用户会无法安装。这里有两种解决方案:
zstar
2022/06/14
1.2K0
SpringBoot发布了新年版本,v2.2.3发布
今天是小年,农历的腊月二十三号,从今天开始就正式步入了新年倒计时了,提前祝大家新年快乐!!!
恒宇少年
2020/02/18
1.2K0

相似问题

错误:“脱机模式没有缓存版本”

13

无法下载builder.jar (com.android.tools.build:builder:3.2.0):脱机模式下没有缓存的版本

10

错误:无法下载工件'com.android.tools.build:gradle:0.13.2:gradle.jar':没有可用于脱机模式的缓存版本

40

Android给出错误“无法下载builder.jar (com.android.tools.build:builder:3.2.0):没有缓存版本可用于脱机模式”

20

没有缓存版本的com.android.tools.build:gradle:3.3可用于脱机模式

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文