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})
|