演示下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
相关推荐
- 理解如何将第三方库(如protobuf)集成到CMake项目中,提高项目可维护性。 8. **实际应用**:这个示例适用于需要使用protobuf进行数据交换的C++项目,例如网络服务、游戏服务器、分布式系统等。 总结,这个...
6. **LIBRARY_DIRS**: 定义了多个库文件路径,用于链接各种第三方库的动态或静态库。 - 示例: - `$(COMMON_PATH)/protobuf/lib` - `$(COMMON_PATH)/hdf5/lib` - `$(COMMON_PATH)/gflags/lib` - `$(COMMON_PATH...
- **配置步骤**:根据xLnt的构建系统(可能是CMake、autotools或其他),运行适当的配置命令来识别你的系统环境和指定第三方库的位置。 - **编译和链接**:执行编译和链接命令,生成目标库文件或可执行文件。 - **...
C++11及更高版本提供了标准的线程库std::thread,或者可以使用第三方库如Pthreads或OpenMP。 9. **CMake或Makefile**: 为了构建和管理这些依赖库,开发过程中会使用构建系统工具,如CMake或传统的Makefile,它们...
从官方源或第三方网站下载`ippicv_linux_20151201.tgz`和`protobuf-3.1.0`,并解压到适当目录。例如,你可以将它们放在`/home/user/downloads`目录下。 4. **编译并安装protobuf**: 进入protobuf源代码目录,...
1. **下载并编译第三方库**:首先,需要编译zlib、protobuf、jpeg等依赖库。如果出现错误,根据错误信息调整第三方库的版本。 2. **按顺序编译项目**:接着,按照特定顺序编译tf_core_lib、tf_core_cpu、tf_core_...
2. **安装依赖项**:Ceres依赖于一些第三方库,如Eigen、glog、gflags和protobuf等。你需要先安装这些库的64位版本,并配置好相应的环境变量。 - Eigen是Ceres的基础数学库,提供矩阵和向量运算。 - glog用于日志...
- `third_party.zip`:包含了gRPC项目中需要的第三方库,这些库可能包含protobuf(Protocol Buffers)和其他依赖项,是gRPC项目的核心组成部分。 3. 安装构建工具: - **CMake**:`cmake-3.21.0-windows-x86_64....
6. Qt集成:学会将第三方库(如phxrpc)集成到Qt项目中,进行开发和调试。 通过学习和实践以上知识点,你将能够顺利地在QtCreator中编译和运行phxrpc项目,为微信后台服务的开发打下坚实基础。
`CMakeLists.txt`是CMake构建系统的配置文件,用于编译gRPC库和示例。 6. **Bazel构建系统** `requirements.bazel.txt`表明项目可能使用Bazel作为构建工具。Bazel是一个自动化构建和测试工具,能跨多个语言和操作...
6. **依赖库**:可能包含gRPC需要的第三方库,如OpenSSL、 zlib等,这些都已经预先集成,以便于在VS2019中直接编译。 使用这个压缩包,开发者可以快速设置一个gRPC开发环境,创建服务定义,使用protobuf生成客户端...
8. **社区与生态**:Caffe有一个活跃的社区,提供了丰富的模型库(Model Zoo)和第三方扩展,如用于图像识别的预训练模型。 9. **构建与部署**:Caffe的构建过程相对简单,通常通过cmake管理。部署模型到生产环境时...
这些包包括编译器、文本编辑器、构建工具以及Caffe所需的第三方库。 ##### 3.2 安装CUDA **步骤1:** 下载CUDA安装包 访问[NVIDIA官网](https://developer.nvidia.com/cuda-downloads)下载适用于Ubuntu 14.04的...
在Java中,可以使用Java自带的序列化机制,或者采用第三方库如Google的Protobuf或Facebook的FST。Netty提供了一些内置的编码器和解码器,如JavaSerializationHandler,但通常建议使用更轻量级且高效的序列化方式,如...