`
aigo
  • 浏览: 2674544 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[cmake]示例:构建引用了protobuf第三方库的工程

阅读更多

演示下cmake如何构建引用了第三方库的C++工程,这里第三方库已protobuf-lite为例。

 

1,我们用protobuf生成一个简单的c++代码,模版文件如下,test.proto:

package HProtocol;

option optimize_for = LITE_RUNTIME;

message add {
	required int32  val		= 1;
}

 

 

2,设置编译目录结构

由于引用了protobuf-lite第三方库,所以我们将编译好的protobuf-lite.lib与其头文件考过来,同时将生成的test.pb.h和test.pb.cc也搞过来。最终的工程目录结构如下:

cmake-protobuf

             |——build/                   #后面用于构建生成的编译目录

             |——include/

                       |——google/       #这里是protobuf的头文件

             |——lib/

                       |——libprotobuf-lite.lib

             |——src/

                       |——test.pb.h

                       |——test.pb.cc

             |——app.cpp

             |——CMakeLists.txt

 

 

3,编译测试代码,app.cpp:

#pragma once 

#include <google/protobuf/message_lite.h>
#include "test.pb.h"

int main(char** args, int size)
{
	HProtocol::add a;
	a.set_val(999);
	printf("%d", a.val());
	return 1;
}

 

 

4,编写CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)

SET(PROJECT_ROOT_PATH ".")   
INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include/")
INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/src/")

link_directories(./lib)

add_executable(app ${PROJECT_ROOT_PATH}/app.cpp ${PROJECT_ROOT_PATH}/src/test.pb.cc)
target_link_libraries(app libprotobuf-lite)

 

 

5,执行命令

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
nmake

这里我拿的protobuf-lite.lib是release x64版本,所以运行命令时也需要在x64 nmake环境下,如何使用nmake的x64模式,见:http://aigo.iteye.com/blog/2294970

 

生成app.exe后运行之得到输出结果:

999

 

 

分享到:
评论

相关推荐

    cmake-google-protobuf-example

    - 理解如何将第三方库(如protobuf)集成到CMake项目中,提高项目可维护性。 8. **实际应用**:这个示例适用于需要使用protobuf进行数据交换的C++项目,例如网络服务、游戏服务器、分布式系统等。 总结,这个...

    caffe2编译-cmake之后生成的makefile文件中需添加的变量

    6. **LIBRARY_DIRS**: 定义了多个库文件路径,用于链接各种第三方库的动态或静态库。 - 示例: - `$(COMMON_PATH)/protobuf/lib` - `$(COMMON_PATH)/hdf5/lib` - `$(COMMON_PATH)/gflags/lib` - `$(COMMON_PATH...

    xLnt源码(可直接编译,包含所有所需第三方库)

    - **配置步骤**:根据xLnt的构建系统(可能是CMake、autotools或其他),运行适当的配置命令来识别你的系统环境和指定第三方库的位置。 - **编译和链接**:执行编译和链接命令,生成目标库文件或可执行文件。 - **...

    百度人脸识别,文字识别等c++接口需要的依赖库

    C++11及更高版本提供了标准的线程库std::thread,或者可以使用第三方库如Pthreads或OpenMP。 9. **CMake或Makefile**: 为了构建和管理这些依赖库,开发过程中会使用构建系统工具,如CMake或传统的Makefile,它们...

    ubuntu 安装opencv3.2 需要的ippicv_linux_20151201+ protobuf-3.1.0

    从官方源或第三方网站下载`ippicv_linux_20151201.tgz`和`protobuf-3.1.0`,并解压到适当目录。例如,你可以将它们放在`/home/user/downloads`目录下。 4. **编译并安装protobuf**: 进入protobuf源代码目录,...

    tf_1.9.0GPUc++版本编译.doc

    1. **下载并编译第三方库**:首先,需要编译zlib、protobuf、jpeg等依赖库。如果出现错误,根据错误信息调整第三方库的版本。 2. **按顺序编译项目**:接着,按照特定顺序编译tf_core_lib、tf_core_cpu、tf_core_...

    vs2013_x64平台编译的ceres库

    2. **安装依赖项**:Ceres依赖于一些第三方库,如Eigen、glog、gflags和protobuf等。你需要先安装这些库的64位版本,并配置好相应的环境变量。 - Eigen是Ceres的基础数学库,提供矩阵和向量运算。 - glog用于日志...

    gRPC+vs2019配置文件.zip

    - `third_party.zip`:包含了gRPC项目中需要的第三方库,这些库可能包含protobuf(Protocol Buffers)和其他依赖项,是gRPC项目的核心组成部分。 3. 安装构建工具: - **CMake**:`cmake-3.21.0-windows-x86_64....

    微信后台phxrpc编译及QtCreator工程下载

    6. Qt集成:学会将第三方库(如phxrpc)集成到Qt项目中,进行开发和调试。 通过学习和实践以上知识点,你将能够顺利地在QtCreator中编译和运行phxrpc项目,为微信后台服务的开发打下坚实基础。

    gRPC源码(2023.06.30左右下载)

    `CMakeLists.txt`是CMake构建系统的配置文件,用于编译gRPC库和示例。 6. **Bazel构建系统** `requirements.bazel.txt`表明项目可能使用Bazel作为构建工具。Bazel是一个自动化构建和测试工具,能跨多个语言和操作...

    grpc-1.23.0.zip

    6. **依赖库**:可能包含gRPC需要的第三方库,如OpenSSL、 zlib等,这些都已经预先集成,以便于在VS2019中直接编译。 使用这个压缩包,开发者可以快速设置一个gRPC开发环境,创建服务定义,使用protobuf生成客户端...

    caffe-master

    8. **社区与生态**:Caffe有一个活跃的社区,提供了丰富的模型库(Model Zoo)和第三方扩展,如用于图像识别的预训练模型。 9. **构建与部署**:Caffe的构建过程相对简单,通常通过cmake管理。部署模型到生产环境时...

    Caffe在Ubuntu 14.04 64bit 下的安装.doc

    这些包包括编译器、文本编辑器、构建工具以及Caffe所需的第三方库。 ##### 3.2 安装CUDA **步骤1:** 下载CUDA安装包 访问[NVIDIA官网](https://developer.nvidia.com/cuda-downloads)下载适用于Ubuntu 14.04的...

    JavaNettyProj服务器与客户端.rar

    在Java中,可以使用Java自带的序列化机制,或者采用第三方库如Google的Protobuf或Facebook的FST。Netty提供了一些内置的编码器和解码器,如JavaSerializationHandler,但通常建议使用更轻量级且高效的序列化方式,如...

Global site tag (gtag.js) - Google Analytics