我尝试将python脚本添加到包中,引用这两个教程。
setup.py的处理
安装Python脚本和模块
因此,我在根test\src\test_pkg中添加了test\src\test_pkg,在路径test\src中更改了CMakeLists.txt。(我的包根路径是test\,我的包路径是test\src\test_pkg,我的python脚本路径是test\src\test_pkg\scripts)
我是setup.py。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
setup_args = generate_distutils_setup(
packages=['test_pkg'],
scripts=['/scripts'],
package_dir={'': 'src'}
)
setup(**setup_args)我是CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(test_pkg)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
sensor_msgs
message_generation
)
catkin_python_setup()
catkin_install_python(PROGRAMS scripts/talker
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
add_message_files(
FILES
Num.msg
)
add_service_files(
FILES
AddTwoInts.srv
)
generate_messages(
DEPENDENCIES
std_msgs
sensor_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime sensor_msgs
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
install(PROGRAMS
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)然后在path test中运行test。(我运行了test\devel\setup.bat)并得到了以下CMake错误:
Base path: E:\workspace\ros\test
Source space: E:\workspace\ros\test\src
Build space: E:\workspace\ros\test\build
Devel space: E:\workspace\ros\test\devel
Install space: E:\workspace\ros\test\install
####
#### Running command: "nmake cmake_check_build_system" in "E:\workspace\ros\test\build"
####
Microsoft (R) ?????????ù??? 14.20.27508.1 ??
??????? (C) Microsoft Corporation?? ?????????????
-- Using CATKIN_DEVEL_PREFIX: E:/workspace/ros/test/devel
-- Using CMAKE_PREFIX_PATH: E:/workspace/ros/test/devel;C:/opt/ros/melodic/x64;C:/opt/rosdeps/x64
-- This workspace overlays: E:/workspace/ros/test/devel;C:/opt/ros/melodic/x64
-- Using PYTHON_EXECUTABLE: C:/opt/python27amd64/python.exe
-- Using default Python package layout
-- Using empy: C:/opt/python27amd64/lib/site-packages/em.pyc
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: E:/workspace/ros/test/build/test_results
-- Found gtest: gtests will be built
-- Using Python nosetests: C:/opt/python27amd64/Scripts/nosetests-2.7.exe
-- catkin 0.7.14
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- Using CATKIN_WHITELIST_PACKAGES: test_pkg
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 1 packages in topological order:
-- ~~ - test_pkg
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'test_pkg'
-- ==> add_subdirectory(test_pkg)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
CMake Error at C:/opt/ros/melodic/x64/share/catkin/cmake/catkin_install_python.cmake:20 (message):
catkin_install_python() called without required DESTINATION argument.
Call Stack (most recent call first):
test_pkg/CMakeLists.txt:27 (catkin_install_python)
-- Configuring incomplete, errors occurred!
See also "E:/workspace/ros/test/build/CMakeFiles/CMakeOutput.log".
See also "E:/workspace/ros/test/build/CMakeFiles/CMakeError.log".
NMAKE : fatal error U1077: ??C:\opt\rosdeps\x64\bin\cmake.exe??: ???????0x1??
Stop.
Invoking "nmake cmake_check_build_system" failed如何修复此错误?谢谢您的回复。
系统: Windows10
ROS: ROS1
发布于 2019-11-21 21:01:47
首先,虽然catkin是一个足够通用的工具,但它通常用于机器人框架ROS。因此,通过询问ROS的问题社区answers.ros.org,您可能会得到更多的响应。
C:/opt/ros/melodic/x64/share/catkin/cmake/catkin_install_python.cmake:20 ( CMake )中的CMake错误:不需要目标参数调用的catkin_install_python()。
我想你指的是正确的在线资源。我也看过它们,其中没有一个能澄清这一点,但是catkin_package()需要在catkin_install_python之前被调用。
发布于 2020-12-23 07:24:00
正确的顺序是:
cmake_minimum_required(VERSION 2.8.3)
project(test_pkg)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
sensor_msgs
message_generation
)
add_message_files(
FILES
Num.msg
)
add_service_files(
FILES
AddTwoInts.srv
)
generate_messages(
DEPENDENCIES
std_msgs
sensor_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime sensor_msgs
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
#catkin_python_setup()
catkin_install_python(PROGRAMS scripts/talker
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
)但是由于您删除了所有未使用的代码,我不确定上面是否得到了正确的代码。如果它在原始文件中,它应该在这里:
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination)
#catkin_package()
#catkin_python_setup()
catkin_install_python(PROGRAMS scripts/talker.py scripts/listener.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)几乎就在文件的末尾。
发布于 2020-12-23 07:00:23
我也有同样的错误。我以为你把密码抄错位置了。如果你把这些代码放在一个相对早的位置,你可能是弄错了。试着把密码放在这里。
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination)
#catkin_package()
#catkin_python_setup()
catkin_install_python(PROGRAMS scripts/talker.py scripts/listener.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)https://stackoverflow.com/questions/56801645
复制相似问题