How do I import Ignition Msg protobufs into my own custom protobuf?
I am trying to make a custom message that uses ignition::msgs::Vector3d
and ignition::msgs::Quaternion
.
Here is my state.proto
syntax = "proto2";
package cdrone.messages;
import "quaternion.proto";
import "vector3d.proto";
message State
{
required int64 time = 1;
required Vector3d position = 2;
required Vector3d velocity = 3;
required Quaternion attitude = 4;
required Vector3d angular_velocity = 5;
}
Here is the CMakeLists.txt I am using to compile the protobufs:
include_directories(${PROTOBUF_INCLUDE_DIRS})
set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS} "/usr/include/ignition/msgs1/ignition/msgs")
set(ProtoFiles
gamepad.proto
motor_power.proto
/usr/include/ignition/msgs1/ignition/msgs/time.proto
/usr/include/ignition/msgs1/ignition/msgs/header.proto
/usr/include/ignition/msgs1/ignition/msgs/vector3d.proto
/usr/include/ignition/msgs1/ignition/msgs/quaternion.proto
state.proto)
PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles})
add_library(messages SHARED ${ProtoSources})
target_link_libraries(messages ${PROTOBUF_LIBRARY})
It looks like it finds the proto files but when it tries to compile an imported proto inside the imported proto, it fails to find the file.
$ make
[ 4%] Built target cpptoml-parser
[ 9%] Built target cpptoml-build
[ 14%] Built target cpptoml-conversions
[ 19%] Built target parse
[ 21%] Running C++ protocol buffer compiler on state.proto
ignition/msgs/header.proto: File not found.
quaternion.proto: Import "ignition/msgs/header.proto" was not found or had errors.
quaternion.proto:32:12: "Header" is not defined.
vector3d.proto: Import "ignition/msgs/header.proto" was not found or had errors.
vector3d.proto:32:12: "Header" is not defined.
state.proto: Import "quaternion.proto" was not found or had errors.
state.proto: Import "vector3d.proto" was not found or had errors.
state.proto:12:12: "Vector3d" is not defined.
state.proto:13:12: "Vector3d" is not defined.
state.proto:14:12: "Quaternion" is not defined.
state.proto:15:12: "Vector3d" is not defined.
src/common/messages/CMakeFiles/messages.dir/build.make:110: recipe for target 'src/common/messages/state.pb.cc' failed
make[2]: *** [src/common/messages/state.pb.cc] Error 1
CMakeFiles/Makefile2:413: recipe for target 'src/common/messages/CMakeFiles/messages.dir/all' failed
make[1]: *** [src/common/messages/CMakeFiles/messages.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2
Hi, could you fix this issue? I have the same issue
Same problem