mediapipe中使用了大量的ProtoBuf技术来表示图结构,而且mediapipe原生并不是采用cmake来构建项目,而是使用google自家研发的bazel,这个项目构建系统我就不评价了,而现在我需要使用Cmake来对其进行构建。 这也是噩梦的开始,mediapipe的.proto文件很多,核心的framework的目录下存在很多的.proto文件,根目录和子目录都有.proto文...
cmake有官方的modules,文件是FindProtobuf.cmake,里面有宏PROTOBUF_GENERATE_CPP.用法据介绍如下: 1 2 3 4 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS foo.proto) ADD_EXECUTABLE(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) TARGET_LINK_LIBRARIES(bar ...
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto) protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto) protobuf_generate_python(PROTO_PY foo.proto) add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) target_link_libraries(bar ${Protobuf_LIBRARIES}) 1. ...
cmake_minimum_required(VERSION3.5)# Set the project nameproject(protobuf_example)# find the protobuf compiler and librariesfind_package(Protobuf REQUIRED)# check if protobuf was foundif(PROTOBUF_FOUND)message("protobuf found")else()message(FATAL_ERROR"Cannot find Protobuf")endif()# Generate th...
这个例子展示了如何使用Protobuf生成源文件。Protocol Buffers是Google提供的一种数据序列化格式。用户提供带有数据描述的.proto文件。然后使用Protobuf编译器,可以将该原始文件翻译成包括C++在内的多种语言的源代码。 本教程中的文件如下: $ tree . ├── AddressBook.proto ...
target_link_libraries(Demo protobuf pthread) 使用的变量${Protobuf_INCLUDEDIR}和${Protobuf_LIBDIR}是根据我们自定义名以及.pc中定义的变量而来,查看protobuf.pc内容如下: prefix=/usr/local/protobuf exec_prefix=${prefix} libdir=${exec_prefix}/lib ...
首先我们知道cmake安装目录下提供了FindProtobuf.cmake,因此find_package(Protobuf)一定是在MODULE模式下而不是CONFIG模式下被搜索到的。(题外话:现代的cmake推荐用XXXConfig.cmake也就是CONFIG模式来找依赖包,这方面OpenCV可以作为典范写的确实越来越好)。
Cmake编译protobuf 大致可以分为三个步骤: 1、下载对应版本protobuf release版本 https://github.com/protocolbuffers/protobuf/releases 2、这篇是cmake和protobuf的结合使用,所以我这里安装的是protobuf-cpp-3.6.1.tar.gz $ tar xf protobuf-cpp-3.6.1.tar.gz $ cd protobuf-3.6.1 $ ./configure $ mak...
${PROTOBUF_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ) # link the exe against the libraries target_link_libraries(protobuf_example PUBLIC ${PROTOBUF_LIBRARIES} ) ``` - [main.cpp] - protobuf示例的源文件. ```cpp #include <iostream> #include <fstream> #include <string> #include "A...
find_package(Protobuf)是 CMake 中用於查詢和載入 Protocol Buffers 的模組。它的作用是在 CMake 配置過程中查詢安裝在系統中的 Protocol Buffers 庫,並將相關資訊儲存在 CMake 變數中,以供後續的構建過程使用。 使用find_package(Protobuf)通常包括以下幾個步驟: ...