pxmlw6n2f/Gazebo_Distributed_TCP/gazebo/msgs/CMakeLists.txt

218 lines
5.7 KiB
CMake
Raw Permalink Normal View History

2019-03-28 10:57:49 +08:00
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 targets 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})