pxmlw6n2f/Gazebo_Distributed/gazebo/msgs/CMakeLists.txt

218 lines
5.7 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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