欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 16:44:47
...

演示下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