Run script at colcon build
HI everyone. I need your help.
I want to run a script during the build of a project that is inside a package, is there any way to do this?
In ROS1(Melodic) I used this code:
CMakeLists.txt
add_custom_target(my_script ALL)
add_custom_command(
TARGET my_script
COMMAND sh -c ". ${CATKIN_DEVEL_PREFIX}/setup.sh && \
scripts/my_script.py"
VERBATIM
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
But in ROS2(Foxy) the approach to building has changed and it doesn't work anymore.
I tried to use it to just check if the script will work during the build, but the project does not have time to build (I'm not sure).
CMakeLists.txt
add_custom_target(my_script ALL)
add_custom_command(
TARGET my_script
COMMAND sh -c ". /path/to/project/install/setup.sh && \
/path/to/project/install/my_package/lib/my_package/my_script.py"
#VERBATIM
#WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
I get an error:
The first start colcon build.
--- stderr: my_package
sh: 1: .: Cant open /path/to/project/install/setup.sh
make[2]: *** [CMakeFiles/my_script.dir/build.make:57: my_script] Error 127
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/my_script.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< my_package [1.28s, exited with code 2]
Summary: 2 packages finished [1.44s]
1 package failed: my_package
1 package had stderr output: my_package
The second start colcon build.
--- stderr: my_package
not found: "/path/to/project/install/my_package/share/my_package/local_setup.sh"
sh: 1: /path/to/project/install/my_package/lib/my_package/my_script.py: not found
make[2]: *** [CMakeFiles/my_script.dir/build.make:57: my_script] Error 127
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/my_script.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< my_package [0.18s, exited with code 2]
Summary: 2 packages finished [0.34s]
1 package failed: my_package
1 package had stderr output: my_package