1
1
2
2
macro (generate_ros_parameter_files)
3
-
4
3
set (CFG_FILES "${ARGN} " )
5
4
set (ROSPARAM_HANDLER_ROOT_DIR "${ROSPARAM_HANDLER_CMAKE_DIR} /.." )
6
5
if (${PROJECT_NAME} _CATKIN_PACKAGE)
@@ -33,6 +32,8 @@ macro(generate_ros_parameter_files)
33
32
get_filename_component (_cfgonly ${_cfg} NAME_WE )
34
33
set (_output_cfg ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_SHARE_DESTINATION} /cfg/${_cfgonly} .cfg)
35
34
set (_output_cpp ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_INCLUDE_DESTINATION} /${_cfgonly} Parameters.h)
35
+ set (_output_py ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /param/${_cfgonly} Parameters.py)
36
+
36
37
37
38
# Create command
38
39
assert(CATKIN_ENV)
@@ -42,17 +43,18 @@ macro(generate_ros_parameter_files)
42
43
${ROSPARAM_HANDLER_ROOT_DIR}
43
44
${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_SHARE_DESTINATION}
44
45
${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_INCLUDE_DESTINATION}
46
+ ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION}
45
47
)
46
48
47
49
add_custom_command (OUTPUT
48
- ${_output_cpp} ${_output_cfg}
50
+ ${_output_cpp} ${_output_cfg} ${_output_py}
49
51
COMMAND ${_cmd}
50
52
DEPENDS ${_input} ${genparam_build_files}
51
53
COMMENT "Generating parameter files from ${_cfgonly} "
52
54
)
53
55
54
56
list (APPEND ${PROJECT_NAME} _LOCAL_CFG_FILES "${_output_cfg} " )
55
- list (APPEND ${PROJECT_NAME} _params_generated ${_output_cpp} ${_output_cfg} )
57
+ list (APPEND ${PROJECT_NAME} _params_generated ${_output_cpp} ${_output_cfg} ${_output_py} )
56
58
57
59
install (
58
60
FILES ${_output_cpp}
@@ -78,11 +80,13 @@ macro(generate_ros_parameter_files)
78
80
list (APPEND ${PROJECT_NAME} _INCLUDE_DIRS ${CATKIN_DEVEL_PREFIX} /${CATKIN_GLOBAL_INCLUDE_DESTINATION} )
79
81
# ensure that the folder exists
80
82
file (MAKE_DIRECTORY ${CATKIN_DEVEL_PREFIX} /${CATKIN_GLOBAL_INCLUDE_DESTINATION} )
81
-
82
83
#Require C++11
83
84
set_property (TARGET ${PROJECT_NAME} _genparam PROPERTY CXX_STANDARD 11)
84
85
set_property (TARGET ${PROJECT_NAME} _genparam PROPERTY CXX_STANDARD_REQUIRED ON )
85
86
87
+ # install python files
88
+ install_ros_python_parameter_files()
89
+
86
90
# generate dynamic reconfigure files
87
91
if (dynamic_reconfigure_FOUND_CATKIN_PROJECT)
88
92
if (${PROJECT_NAME} _LOCAL_CFG_FILES)
@@ -92,3 +96,39 @@ macro(generate_ros_parameter_files)
92
96
message (WARNING "Dependency to dynamic_reconfigure is missing, or find_package(dynamic_reconfigure) was not called yet. Not building dynamic config files" )
93
97
endif ()
94
98
endmacro ()
99
+
100
+ macro (install_ros_python_parameter_files)
101
+ if (NOT install_ros_python_parameter_files_CALLED)
102
+ set (install_ros_python_parameter_files_CALLED TRUE )
103
+
104
+ # mark that generate_dynamic_reconfigure_options() was called in order to detect wrong order of calling with catkin_python_setup()
105
+ set (${PROJECT_NAME} _GENERATE_DYNAMIC_RECONFIGURE TRUE )
106
+
107
+ # check if catkin_python_setup() installs an __init__.py file for a package with the current project name
108
+ # in order to skip the installation of a generated __init__.py file
109
+ set (package_has_static_sources ${${PROJECT_NAME} _CATKIN_PYTHON_SETUP_HAS_PACKAGE_INIT})
110
+ if (NOT EXISTS ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /__init__.py)
111
+ file (WRITE ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /__init__.py "" )
112
+ endif ()
113
+ if (NOT package_has_static_sources)
114
+ # install package __init__.py
115
+ install (
116
+ FILES ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /__init__.py
117
+ DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION}
118
+ )
119
+ endif ()
120
+
121
+ # generate param module __init__.py
122
+ if (NOT EXISTS ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /param/__init__.py)
123
+ file (WRITE ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /param/__init__.py "" )
124
+ endif ()
125
+
126
+ # compile python code before installing
127
+ find_package (PythonInterp REQUIRED)
128
+ install (CODE "execute_process(COMMAND \" ${PYTHON_EXECUTABLE} \" -m compileall \" ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /param\" )" )
129
+ install (
130
+ DIRECTORY ${CATKIN_DEVEL_PREFIX} /${CATKIN_PACKAGE_PYTHON_DESTINATION} /param
131
+ DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION}
132
+ )
133
+ endif ()
134
+ endmacro ()
0 commit comments