v01
This commit is contained in:
87
thirdparty/ros/ros_comm/clients/roscpp/rosbuild/roscpp.cmake
vendored
Normal file
87
thirdparty/ros/ros_comm/clients/roscpp/rosbuild/roscpp.cmake
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
rosbuild_find_ros_package(genmsg_cpp)
|
||||
rosbuild_find_ros_package(roscpp)
|
||||
|
||||
# Message-generation support.
|
||||
macro(genmsg_cpp)
|
||||
rosbuild_get_msgs(_msglist)
|
||||
set(_autogen "")
|
||||
foreach(_msg ${_msglist})
|
||||
# Construct the path to the .msg file
|
||||
set(_input ${PROJECT_SOURCE_DIR}/msg/${_msg})
|
||||
|
||||
rosbuild_gendeps(${PROJECT_NAME} ${_msg})
|
||||
|
||||
set(genmsg_cpp_exe ${roscpp_PACKAGE_PATH}/rosbuild/scripts/genmsg_cpp.py)
|
||||
|
||||
set(_output_cpp ${PROJECT_SOURCE_DIR}/msg_gen/cpp/include/${PROJECT_NAME}/${_msg})
|
||||
string(REPLACE ".msg" ".h" _output_cpp ${_output_cpp})
|
||||
|
||||
# Add the rule to build the .h the .msg
|
||||
add_custom_command(OUTPUT ${_output_cpp}
|
||||
COMMAND ${genmsg_cpp_exe} ${_input}
|
||||
DEPENDS ${_input} ${genmsg_cpp_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_msg}_GENDEPS} ${ROS_MANIFEST_LIST})
|
||||
list(APPEND _autogen ${_output_cpp})
|
||||
endforeach(_msg)
|
||||
# Create a target that depends on the union of all the autogenerated
|
||||
# files
|
||||
add_custom_target(ROSBUILD_genmsg_cpp DEPENDS ${_autogen})
|
||||
# Make our target depend on rosbuild_premsgsrvgen, to allow any
|
||||
# pre-msg/srv generation steps to be done first.
|
||||
add_dependencies(ROSBUILD_genmsg_cpp rosbuild_premsgsrvgen)
|
||||
# Add our target to the top-level rospack_genmsg target, which will be
|
||||
# fired if the user calls genmsg()
|
||||
add_dependencies(rospack_genmsg ROSBUILD_genmsg_cpp)
|
||||
|
||||
if(_autogen)
|
||||
# Also set up to clean the msg_gen directory
|
||||
get_directory_property(_old_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
|
||||
list(APPEND _old_clean_files ${PROJECT_SOURCE_DIR}/msg_gen)
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${_old_clean_files}")
|
||||
endif(_autogen)
|
||||
endmacro(genmsg_cpp)
|
||||
|
||||
# Call the macro we just defined.
|
||||
genmsg_cpp()
|
||||
|
||||
# Service-generation support.
|
||||
macro(gensrv_cpp)
|
||||
rosbuild_get_srvs(_srvlist)
|
||||
set(_autogen "")
|
||||
foreach(_srv ${_srvlist})
|
||||
# Construct the path to the .srv file
|
||||
set(_input ${PROJECT_SOURCE_DIR}/srv/${_srv})
|
||||
|
||||
rosbuild_gendeps(${PROJECT_NAME} ${_srv})
|
||||
|
||||
set(gensrv_cpp_exe ${roscpp_PACKAGE_PATH}/rosbuild/scripts/gensrv_cpp.py)
|
||||
set(genmsg_cpp_exe ${roscpp_PACKAGE_PATH}/rosbuild/scripts/genmsg_cpp.py)
|
||||
|
||||
set(_output_cpp ${PROJECT_SOURCE_DIR}/srv_gen/cpp/include/${PROJECT_NAME}/${_srv})
|
||||
string(REPLACE ".srv" ".h" _output_cpp ${_output_cpp})
|
||||
|
||||
# Add the rule to build the .h from the .srv
|
||||
add_custom_command(OUTPUT ${_output_cpp}
|
||||
COMMAND ${gensrv_cpp_exe} ${_input}
|
||||
DEPENDS ${_input} ${gensrv_cpp_exe} ${genmsg_cpp_exe} ${gendeps_exe} ${${PROJECT_NAME}_${_srv}_GENDEPS} ${ROS_MANIFEST_LIST})
|
||||
list(APPEND _autogen ${_output_cpp})
|
||||
endforeach(_srv)
|
||||
# Create a target that depends on the union of all the autogenerated
|
||||
# files
|
||||
add_custom_target(ROSBUILD_gensrv_cpp DEPENDS ${_autogen})
|
||||
# Make our target depend on rosbuild_premsgsrvgen, to allow any
|
||||
# pre-msg/srv generation steps to be done first.
|
||||
add_dependencies(ROSBUILD_gensrv_cpp rosbuild_premsgsrvgen)
|
||||
# Add our target to the top-level gensrv target, which will be fired if
|
||||
# the user calls gensrv()
|
||||
add_dependencies(rospack_gensrv ROSBUILD_gensrv_cpp)
|
||||
|
||||
if(_autogen)
|
||||
# Also set up to clean the srv_gen directory
|
||||
get_directory_property(_old_clean_files ADDITIONAL_MAKE_CLEAN_FILES)
|
||||
list(APPEND _old_clean_files ${PROJECT_SOURCE_DIR}/srv_gen)
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${_old_clean_files}")
|
||||
endif(_autogen)
|
||||
endmacro(gensrv_cpp)
|
||||
|
||||
# Call the macro we just defined.
|
||||
gensrv_cpp()
|
||||
Reference in New Issue
Block a user