218 lines
5.7 KiB
CMake
218 lines
5.7 KiB
CMake
|
include (${gazebo_cmake_dir}/GazeboUtils.cmake)
|
|||
|
include_directories(${IGNITION-MATH_INCLUDE_DIRS})
|
|||
|
|
|||
|
set (msgs
|
|||
|
altimeter.proto
|
|||
|
any.proto
|
|||
|
axis.proto
|
|||
|
battery.proto
|
|||
|
boxgeom.proto
|
|||
|
camerasensor.proto
|
|||
|
camera_cmd.proto
|
|||
|
camera_lens.proto
|
|||
|
cessna.proto
|
|||
|
collision.proto
|
|||
|
color.proto
|
|||
|
contact.proto
|
|||
|
contacts.proto
|
|||
|
contactsensor.proto
|
|||
|
cylindergeom.proto
|
|||
|
diagnostics.proto
|
|||
|
distortion.proto
|
|||
|
factory.proto
|
|||
|
fluid.proto
|
|||
|
fog.proto
|
|||
|
friction.proto
|
|||
|
geometry.proto
|
|||
|
gps.proto
|
|||
|
gui_camera.proto
|
|||
|
gui.proto
|
|||
|
gz_string.proto
|
|||
|
gz_string_v.proto
|
|||
|
header.proto
|
|||
|
heightmapgeom.proto
|
|||
|
hydra.proto
|
|||
|
imagegeom.proto
|
|||
|
image.proto
|
|||
|
image_stamped.proto
|
|||
|
images_stamped.proto
|
|||
|
imu.proto
|
|||
|
inertial.proto
|
|||
|
int.proto
|
|||
|
joint.proto
|
|||
|
joint_animation.proto
|
|||
|
joint_cmd.proto
|
|||
|
joint_wrench.proto
|
|||
|
joint_wrench_stamped.proto
|
|||
|
joystick.proto
|
|||
|
laserscan.proto
|
|||
|
laserscan_stamped.proto
|
|||
|
light.proto
|
|||
|
link.proto
|
|||
|
link_data.proto
|
|||
|
log_control.proto
|
|||
|
log_playback_control.proto
|
|||
|
log_playback_stats.proto
|
|||
|
log_status.proto
|
|||
|
logical_camera_image.proto
|
|||
|
logical_camera_sensor.proto
|
|||
|
magnetometer.proto
|
|||
|
material.proto
|
|||
|
meshgeom.proto
|
|||
|
model.proto
|
|||
|
model_configuration.proto
|
|||
|
model_v.proto
|
|||
|
packet.proto
|
|||
|
physics.proto
|
|||
|
planegeom.proto
|
|||
|
pid.proto
|
|||
|
plugin.proto
|
|||
|
pointcloud.proto
|
|||
|
polylinegeom.proto
|
|||
|
pose.proto
|
|||
|
pose_animation.proto
|
|||
|
pose_stamped.proto
|
|||
|
pose_trajectory.proto
|
|||
|
pose_v.proto
|
|||
|
poses_stamped.proto
|
|||
|
projector.proto
|
|||
|
propagation_particle.proto
|
|||
|
propagation_grid.proto
|
|||
|
publishers.proto
|
|||
|
publish.proto
|
|||
|
quaternion.proto
|
|||
|
sonar.proto
|
|||
|
sonar_stamped.proto
|
|||
|
raysensor.proto
|
|||
|
request.proto
|
|||
|
response.proto
|
|||
|
rest_response.proto
|
|||
|
rest_login.proto
|
|||
|
rest_logout.proto
|
|||
|
rest_post.proto
|
|||
|
road.proto
|
|||
|
scene.proto
|
|||
|
selection.proto
|
|||
|
sensor.proto
|
|||
|
server_control.proto
|
|||
|
shadows.proto
|
|||
|
sim_event.proto
|
|||
|
sky.proto
|
|||
|
spheregeom.proto
|
|||
|
spherical_coordinates.proto
|
|||
|
subscribe.proto
|
|||
|
surface.proto
|
|||
|
tactile.proto
|
|||
|
test.proto
|
|||
|
time.proto
|
|||
|
topic_info.proto
|
|||
|
track_visual.proto
|
|||
|
undo_redo.proto
|
|||
|
user_cmd.proto
|
|||
|
user_cmd_stats.proto
|
|||
|
vector2d.proto
|
|||
|
vector3d.proto
|
|||
|
visual.proto
|
|||
|
wireless_node.proto
|
|||
|
wireless_nodes.proto
|
|||
|
world_control.proto
|
|||
|
world_reset.proto
|
|||
|
world_stats.proto
|
|||
|
world_modify.proto
|
|||
|
wrench.proto
|
|||
|
wrench_stamped.proto
|
|||
|
)
|
|||
|
|
|||
|
set (msgs_tests_sources
|
|||
|
msgs_TEST.cc
|
|||
|
MsgFactory_TEST.cc
|
|||
|
)
|
|||
|
gz_build_tests(${msgs_tests_sources} EXTRA_LIBS gazebo_msgs)
|
|||
|
|
|||
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|||
|
|
|||
|
add_executable(gazebomsgs_out generator/GazeboGenerator.cc generator/gazebo_generator.cc)
|
|||
|
target_link_libraries(gazebomsgs_out ${GZ_PROTOBUF_LIBRARY} ${GZ_PROTOBUF_PROTOC_LIBRARY})
|
|||
|
if (UNIX)
|
|||
|
target_link_libraries(gazebomsgs_out pthread)
|
|||
|
endif()
|
|||
|
|
|||
|
set (sources msgs.cc MsgFactory.cc)
|
|||
|
set (headers msgs.hh MsgFactory.hh)
|
|||
|
|
|||
|
###########################################################
|
|||
|
# Append str to a string property of a target.
|
|||
|
# target: string: target name.
|
|||
|
# property: name of target’s property. e.g: COMPILE_FLAGS, or LINK_FLAGS
|
|||
|
# str: string: string to be appended to the property
|
|||
|
macro(my_append_target_property target property str)
|
|||
|
get_target_property(current_property ${target} ${property})
|
|||
|
if(NOT current_property) # property non-existent or empty
|
|||
|
set_target_properties(${target} PROPERTIES GENERATED TRUE ${property} ${str})
|
|||
|
else()
|
|||
|
set_target_properties(${target} PROPERTIES ${property} "${current_property} ${str}")
|
|||
|
endif()
|
|||
|
endmacro(my_append_target_property)
|
|||
|
|
|||
|
set(PROTO_SRCS)
|
|||
|
set(PROTO_HDRS)
|
|||
|
foreach(FIL ${msgs})
|
|||
|
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
|
|||
|
get_filename_component(FIL_WE ${FIL} NAME_WE)
|
|||
|
|
|||
|
list(APPEND PROTO_SRCS "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
|
|||
|
list(APPEND PROTO_HDRS "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
|
|||
|
|
|||
|
# Need to add .exe to executable in windows
|
|||
|
if (WIN32)
|
|||
|
set(gazebomsgs_out_binary "gazebomsgs_out.exe")
|
|||
|
else()
|
|||
|
set(gazebomsgs_out_binary "gazebomsgs_out")
|
|||
|
endif()
|
|||
|
|
|||
|
add_custom_command(
|
|||
|
OUTPUT
|
|||
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
|
|||
|
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
|
|||
|
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
|||
|
ARGS --plugin=protoc-gen-gazebomsgs=${CMAKE_CURRENT_BINARY_DIR}/${gazebomsgs_out_binary} --cpp_out=dllexport_decl=GZ_MSGS_VISIBLE:${CMAKE_CURRENT_BINARY_DIR} --gazebomsgs_out=${CMAKE_CURRENT_BINARY_DIR} --proto_path=${CMAKE_CURRENT_SOURCE_DIR} ${ABS_FIL}
|
|||
|
DEPENDS ${ABS_FIL} gazebomsgs_out
|
|||
|
COMMENT "Running C++ protocol buffer compiler on ${FIL}"
|
|||
|
VERBATIM )
|
|||
|
endforeach()
|
|||
|
|
|||
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBUILDING_DLL_GZ_MSGS")
|
|||
|
|
|||
|
set_source_files_properties(${PROTO_SRCS} ${PROTO_HDRS} PROPERTIES GENERATED TRUE)
|
|||
|
gz_add_library(gazebo_msgs ${PROTO_SRCS} ${sources})
|
|||
|
if (UNIX)
|
|||
|
# Need to add default visibility to gazebo_msgs
|
|||
|
get_target_property(current_property gazebo_msgs COMPILE_FLAGS)
|
|||
|
if(NOT current_property) # property non-existent or empty
|
|||
|
set_target_properties(gazebo_msgs PROPERTIES GENERATED TRUE COMPILE_FLAGS "-fvisibility=default")
|
|||
|
else()
|
|||
|
set_target_properties(gazebo_msgs PROPERTIES COMPILE_FLAGS "${current_property} -fvisibility=default")
|
|||
|
endif()
|
|||
|
endif()
|
|||
|
|
|||
|
target_link_libraries(gazebo_msgs
|
|||
|
gazebo_common
|
|||
|
${GZ_PROTOBUF_LIBRARY}
|
|||
|
)
|
|||
|
|
|||
|
add_dependencies(gazebo_msgs gazebomsgs_out)
|
|||
|
|
|||
|
set (message_headers "" CACHE INTERNAL "Include dirs description")
|
|||
|
|
|||
|
foreach (hdr ${PROTO_HDRS})
|
|||
|
string (REPLACE "${CMAKE_CURRENT_BINARY_DIR}/" "" hdr ${hdr})
|
|||
|
APPEND_TO_CACHED_STRING(message_headers
|
|||
|
"Message Types" "#include \"${hdr}\"\n")
|
|||
|
endforeach()
|
|||
|
configure_file (${PROJECT_SOURCE_DIR}/gazebo/msgs/MessageTypes.hh.in
|
|||
|
${CMAKE_CURRENT_BINARY_DIR}/MessageTypes.hh )
|
|||
|
|
|||
|
gz_install_library(gazebo_msgs)
|
|||
|
gz_install_includes("msgs" ${PROTO_HDRS} ${headers} ${CMAKE_CURRENT_BINARY_DIR}/MessageTypes.hh)
|
|||
|
gz_install_includes("msgs/proto" ${msgs})
|