我从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
以便它使用本地安装的协议缓冲区?
答案 0 :(得分:2)
配置构建目录时,可以设置CMAKE_MODULE_PATH
以指定搜索包的自定义位置。您不需要修改CMakeLists.txt
,例如配置您的构建:
cmake -DCMAKE_MODULE_PATH=/path/to/protobuf/cmake/config /path/to/source