[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