为本地安装的协议缓冲区配置CMakeLists.txt

时间:2017-12-08 08:15:45

标签: c++ cmake protocol-buffers ros

我从GitHub下载了协议缓冲源。我不想全局安装它,只想在我的ROS包中使用它。我找到了cmake个文件here,但不知道如何在我的项目中使用它们。

以下是我CMakeLists.txt的内容:

cmake_minimum_required(VERSION 2.8.3)
project(local_protobuf_ros_example)

find_package(catkin REQUIRED COMPONENTS roscpp)
find_package(Protobuf REQUIRED)

catkin_package()
include_directories(include ${catkin_INCLUDE_DIRS} ${PROTOBUF_INCLUDE_DIRS})

add_library(addressbook_protobuf include/addressbook.pb.cc)

add_executable(main src/main.cpp)
target_link_libraries(main ${catkin_LIBRARIES} addressbook_protobuf ${PROTOBUF_LIBRARIES})

以下是ROS Package的文件结构:

├── CMakeLists.txt
├── include
│   ├── addressbook.pb.cc
│   ├── addressbook.pb.h
│   └── addressbook.proto
├── lib
│   ├── protobuf-3.5.0
│   │   ├── cmake
│   │   │   ├── CMakeLists.txt
│   │   │   ├── examples.cmake
│   │   │   ├── extract_includes.bat.in
│   │   │   ├── install.cmake
│   │   │   ├── libprotobuf.cmake
│   │   │   ├── libprotobuf-lite.cmake
│   │   │   ├── libprotoc.cmake
│   │   │   ├── protobuf-config.cmake.in
│   │   │   ├── protobuf-config-version.cmake.in
│   │   │   ├── protobuf-lite.pc.cmake
│   │   │   ├── protobuf-module.cmake.in
│   │   │   ├── protobuf-options.cmake
│   │   │   ├── protobuf.pc.cmake
│   │   │   ├── protoc.cmake
│   │   │   ├── README.md
│   │   │   └── tests.cmake
│   │   ├──SOME_FILES_ARE_NOT_BEING_SHOWN_HERE
│   └── protobuf-cpp-3.5.0.zip
├── package.xml
└── src
    └── main.cpp

我想知道如何配置上面CMakeLists.txt以便它使用本地安装的协议缓冲区?

1 个答案:

答案 0 :(得分:2)

配置构建目录时,可以设置CMAKE_MODULE_PATH以指定搜索包的自定义位置。您不需要修改CMakeLists.txt,例如配置您的构建:

cmake -DCMAKE_MODULE_PATH=/path/to/protobuf/cmake/config /path/to/source