[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

猜你喜欢

转载自aigo.iteye.com/blog/2295162