我正在尝试编译此项目:https://github.com/shaochuan/cmake-protobuf-example.我使用msvc2015(x64)成功编译了protobuf。检查项目运行时没有错误(所有结果:通过)。
我在cmake中设置了该项目,提供了所有路径:
Protobuf\u INCLUDE\u DIR=C:/TK/Protobuf-330/msvc2015\u 64/install/INCLUDE。libProtobuf\u LITE\u LIBRARY\u DEBUG=C:/TK/Protobuf-330/msvc2015\u 64/install/lib/libprotobuf lited。lib
Protobuf_PROTOC_EXECUTABLE=C:/TK/Pro buf-330/msvc2015_64/install/bin/protoc.exe
Protobuf_PROTOC_LIBRARY_DEBUG=C:/TK/Pro buf-330/msvc2015_64/install/lib/libprotocd.lib
Protobuf_SRC_ROOT_FOLDER=C:\TK\src\Pro buf-330\src
proto项目编译时没有任何错误。它包括消息。抄送和消息。h文件。CMakeLists。txt如下所示:
INCLUDE(FindProtobuf)
FIND_PACKAGE(Protobuf REQUIRED)
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
PROTOBUF_GENERATE_CPP(PROTO_SRC PROTO_HEADER message.proto)
ADD_LIBRARY(proto ${PROTO_HEADER} ${PROTO_SRC})
如果我用以下CMakeLists编译主项目。txt文件:
PROJECT(rpc)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
ADD_SUBDIRECTORY(proto)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
ADD_EXECUTABLE(main main.cpp)
TARGET_LINK_LIBRARIES(main proto ${PROTOBUF_LIBRARY})
然后构建它,我收到以下错误(C1083):
"无法打开包含文件:'google/Pro buf/stubs/Common. h':没有这样的文件或目录"c:\tktest\Pro buftest\src\proto\message.pb.h
文件中的错误行为:
#include <google/protobuf/stubs/common.h>
我不知道出了什么问题。如有任何提示,我们将不胜感激。关于cmake protobuf visual studio 2015,是否存在一些已知问题?提前谢谢。
因为我对protobuf一无所知,所以我要进行一个有根据的猜测。
首选target_*
命令。
原型项目CMakeLists.txt:
target_include_directories(proto
PUBLIC
"${Protobuf_INCLUDE_DIRS}")
这就是说,所有使用proto目标的东西都可以访问“${Protobuf\u INCLUDE\u DIRS}”中的任何INCLUDE,并且proto本身也可以访问它们。
在我的电脑上,项目正在编译,但没有链接。因此,要解决此问题,库proto需要链接protobuf库。这可以通过在proto/CMakeLists中添加以下行来完成。txt
TARGET_LINK_LIBRARIES(proto ${PROTOBUF_LIBRARY})
此更改后,它可以在我的PC上运行。
在您的CMakeLists.txt您应该将PROTOBUF_INCLUDE_DIR
替换为Protobuf_INCLUDE_DIR
或Protobuf_INCLUDE_DIRS
(注意末尾的S
),并将PROTOBUF_LIBRARY
替换为Protobuf_LIBRARY
或Protobuf_LIBRARIES
。CMake变量名称区分大小写。我刚刚检查了CMake 3.9版本。FindProtobuf.cmake模块在使用find_package时隐式调用,它在运行成功时定义这些变量。
我是C的新手,这是我使用visual studio的第一个项目。我有#include
无法打开源文件“bits/stdc++.h” 我怎么才能修好这个?
我试图在Visual Studio Community 2017上构建一个解决方案,但我不断收到错误“无法打开include文件:‘stdio.h’”。 我已经阅读了几个类似的问题,但我仍然无法解决这个问题。它看起来像stdio。h文件在stdafx中调用。h文件。以下是更多详细信息。有什么建议吗? 系统详细信息: Windows 10 第1步:我写了著名的Hello, World!用C编写程序。
我是VS2010新手,尝试编译一个在VS2008中工作过的项目。错误看起来很简单: stdafx.h(43): 致命错误 C1083: 无法打开包含文件: 'afxwin.h': 没有这样的文件或目录标准字符串.h(619): 致命错误 C1083: 无法打开包含文件: TCHAR.H': 没有这样的文件或目录线程.h(52): 致命错误 C1083: 无法打开包含文件: “cassert”: 没
H-ui 是一个基于 Bootstrap 框架的改进扩展,比 Bootstrap 更懂中国。 完全免费,简单灵活,兼容性好,满足大多数中国网站。 诠释H-ui Hear这里 U有 I我 hui辉(我的名字) He他 yoU你 I我
hooper's blog. 自律, 警醒. ******************************** FBI WARNING ******************************** PS:如有问题,或者错误,欢迎提 ISSUE ,共同成长 掘金 link 掘金 专栏 segmentfault 主页 广告 部门长期招收大量研发岗位【前端,后端,算法】,欢迎各位大神投递,踊跃尝试。