ROS catkin编译报错Missing variable is CMAKE_py_LINK_EXECUTABLE如何解决
错误原因
add_executable、target_link_libraries、set_target_properties均为CMake针对C/C++等编译型语言的配置指令,Python是解释型语言不需要编译链接,你强制给Python节点指定链接语言为py,而CMake本身没有内置Python语言的链接器配置,因此会抛出CMAKE_py_LINK_EXECUTABLE缺失的报错。你后续修改时将变量名直接作为语言参数传入,CMake会自动拼接生成CMAKE_<参数值>_LINK_EXECUTABLE格式的查找变量,因此会出现CMAKE_CMAKE_py_LINK_EXECUTABLE_LINK_EXECUTABLE缺失的二次报错。
修复步骤
完全删除你之前添加的三行错误CMake配置,按照ROS Python节点的标准规则配置即可:
- 给
src/motion_controller.py头部添加shebang声明,指定解释器:#!/usr/bin/env python3 # ROS1 Kinetic/Melodic等Python2环境替换为 #!/usr/bin/env python2 - 给Python节点文件添加可执行权限:
chmod +x /home/cdegner/create_ws/src/motion_controller/src/motion_controller.py - 在CMakeLists.txt中添加Python节点的安装配置:
catkin_install_python(PROGRAMS src/motion_controller.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) - 确认package.xml中已经添加Python依赖:
<!-- ROS1 Noetic及以上版本 --> <build_depend>python3_catkin</build_depend> <exec_depend>python3_catkin</exec_depend> <!-- ROS1 Melodic及以下版本 --> <!-- <build_depend>python_catkin</build_depend> --> <!-- <exec_depend>python_catkin</exec_depend> -->
配置完成后删除工作区的build和devel目录,重新执行catkin_make或者catkin build即可正常编译。
内容的提问来源于stack exchange,提问作者cdegner
相关产品推荐
相关产品推荐

