Я пытаюсь скомпилировать одну кодовую базу со ссылками на оба протобуфера 3.4.1 и 2.6.1.Теперь вариант 2.6.1 определен глобально, поскольку я использую ubuntu xenial, а также:
$ protoc --version
выход:
libprotoc 2.6.1
Требование к версии 3.4.1 протобуфера исходит от Google Cartographer(https://github.com/googlecartographer/cartographer), в то время как требование для 2.6.1 исходит от симулятора роторов (https://github.com/ethz-asl/rotors_simulator), поскольку оно опирается на Gazebo-7 (который использует протобуфер 2.6.1). Для компиляции Google Cartographer я добавилдвоичные файлы (добавленные в папку proto3, см. ниже) к установке путем адаптации файла CMakeList.txt (см. оригинальный файл здесь: https://raw.githubusercontent.com/googlecartographer/cartographer/master/CMakeLists.txt) для Google Cartographer путем добавления следующих строк:
set(CMAKE_PREFIX_PATH CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/proto3")
...
install(DIRECTORY proto3/ DESTINATION .)
Таким образом, бинарные файлы протобуфера 3.4.1 добавляются в папку установки. Я использую catkin-tools (https://catkin -tools.readthedocs.io / en / latest / ) для сборки всегорабочая область. Теперь в CMakelist.txt для Rotors Simulator у меня есть следующая строка:
find_package(Protobuf 2.6.1 REQUIRED HINTS "/usr")
Но в данный момент при попытке компиляции он не может найти протобуфер 2.4.1, так какреполучается следующее:
Could not find a configuration file for package "Protobuf" that is
compatible with requested version "2.6.1".
The following configuration files were considered but not accepted:
/home/jochem/catkin_ws/install/lib/cmake/protobuf/protobuf-config.cmake,
version: 3.4.1
В качестве примечания, если я скомпилирую пакеты отдельно, я смогу скомпилировать и установить пакеты.Это делается с помощью следующих команд:
catkin build cartographer_ros
и
catkin build rotors_gazebo_plugins
В настоящее время я пытаюсь адаптировать пакет rotors_gazebo_plugins, но пока не удается убедиться в правильном протобуферебиблиотека выбрана, я что-то упустил, определив ссылки на локальную версию протобуфера?