You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.2 KiB
57 lines
2.2 KiB
@[if DEVELSPACE]@ |
|
# bin and template dir variables in develspace |
|
set(GENCPP_BIN "@(CMAKE_CURRENT_SOURCE_DIR)/scripts/gen_cpp.py") |
|
set(GENCPP_TEMPLATE_DIR "@(CMAKE_CURRENT_SOURCE_DIR)/scripts") |
|
@[else]@ |
|
# bin and template dir variables in installspace |
|
set(GENCPP_BIN "${gencpp_DIR}/../../../@(CATKIN_PACKAGE_BIN_DESTINATION)/gen_cpp.py") |
|
set(GENCPP_TEMPLATE_DIR "${gencpp_DIR}/..") |
|
@[end if]@ |
|
|
|
# Generate .msg->.h for cpp |
|
# The generated .h files should be added ALL_GEN_OUTPUT_FILES_cpp |
|
macro(_generate_msg_cpp ARG_PKG ARG_MSG ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR) |
|
file(MAKE_DIRECTORY ${ARG_GEN_OUTPUT_DIR}) |
|
|
|
#Create input and output filenames |
|
get_filename_component(MSG_NAME ${ARG_MSG} NAME) |
|
get_filename_component(MSG_SHORT_NAME ${ARG_MSG} NAME_WE) |
|
|
|
set(MSG_GENERATED_NAME ${MSG_SHORT_NAME}.h) |
|
set(GEN_OUTPUT_FILE ${ARG_GEN_OUTPUT_DIR}/${MSG_GENERATED_NAME}) |
|
|
|
assert(CATKIN_ENV) |
|
add_custom_command(OUTPUT ${GEN_OUTPUT_FILE} |
|
DEPENDS ${GENCPP_BIN} ${ARG_MSG} ${ARG_MSG_DEPS} "${GENCPP_TEMPLATE_DIR}/msg.h.template" ${ARGN} |
|
COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENCPP_BIN} ${ARG_MSG} |
|
${ARG_IFLAGS} |
|
-p ${ARG_PKG} |
|
-o ${ARG_GEN_OUTPUT_DIR} |
|
-e ${GENCPP_TEMPLATE_DIR} |
|
COMMENT "Generating C++ code from ${ARG_PKG}/${MSG_NAME}" |
|
) |
|
list(APPEND ALL_GEN_OUTPUT_FILES_cpp ${GEN_OUTPUT_FILE}) |
|
|
|
gencpp_append_include_dirs() |
|
endmacro() |
|
|
|
#gencpp uses the same program to generate srv and msg files, so call the same macro |
|
macro(_generate_srv_cpp ARG_PKG ARG_SRV ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR) |
|
_generate_msg_cpp(${ARG_PKG} ${ARG_SRV} "${ARG_IFLAGS}" "${ARG_MSG_DEPS}" ${ARG_GEN_OUTPUT_DIR} "${GENCPP_TEMPLATE_DIR}/srv.h.template") |
|
endmacro() |
|
|
|
macro(_generate_module_cpp) |
|
# the macros, they do nothing |
|
endmacro() |
|
|
|
set(gencpp_INSTALL_DIR include) |
|
|
|
macro(gencpp_append_include_dirs) |
|
if(NOT gencpp_APPENDED_INCLUDE_DIRS) |
|
# make sure we can find generated messages and that they overlay all other includes |
|
include_directories(BEFORE ${CATKIN_DEVEL_PREFIX}/${gencpp_INSTALL_DIR}) |
|
# pass the include directory to catkin_package() |
|
list(APPEND ${PROJECT_NAME}_INCLUDE_DIRS ${CATKIN_DEVEL_PREFIX}/${gencpp_INSTALL_DIR}) |
|
set(gencpp_APPENDED_INCLUDE_DIRS TRUE) |
|
endif() |
|
endmacro()
|
|
|