鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros2 foxy 自定义消息接口编译 “没有规则可制作目标”

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2编译 ros2-foxy ros2话题
    2
    14
    1.2k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 8
      Egoist @小鱼
      最后由 87725837 编辑

      @小鱼

      package.xml

      <?xml version="1.0"?>
      <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
      <package format="3">
        <name>village_interfaces</name>
        <version>0.0.0</version>
        <description>TODO: Package description</description>
        <maintainer email="">oem</maintainer>
        <license>TODO: License declaration</license>
      
        <buildtool_depend>ament_cmake</buildtool_depend>
      
        <test_depend>ament_lint_auto</test_depend>
        <test_depend>ament_lint_common</test_depend>
      
        <depend>sensor_msgs</depend>
        <build_depend>rosidl_default_generators</build_depend>
        <exec_depend>rosidl_default_runtime</exec_depend>
        <member_of_group>rosidl_interface_packages</member_of_group>
      
        <export>
          <build_type>ament_cmake</build_type>
        </export>
      </package>
      

      结构

      village_interfaces
      ├── CMakeLists.txt
      ├── include
      │   └── village_interfaces
      ├── msg
      │   └── Novel.msg
      ├── package.xml
      └── src
      

      Novel.msg

      string conten
      sensor_msgs/Image image
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @87725837
        最后由 编辑

        @87725837 你的构建命令是在哪一个目录下运行的

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        8 1 条回复 最后回复 回复 引用 0
        • 8
          Egoist @小鱼
          最后由 编辑

          @小鱼 工作空间下运行的

          oem@oem-ThinkPad-X1-Yoga-3rd:~/town_ws$ colcon build --packages-select village_interfaces
          Starting >>> village_interfaces
          --- stderr: village_interfaces                             
          make[1]: *** 没有规则可制作目标“village_interfaces__py/CMakeFiles/village_interfaces__py.dir/all”,由“CMakeFiles/village_interfaces__python.dir/all” 需求。 停止。
          make[1]: *** 正在等待未完成的任务....
          make: *** [Makefile:146:all] 错误 2
          ---
          Failed   <<< village_interfaces [0.12s, exited with code 2]
          
          Summary: 0 packages finished [0.50s]
            1 package failed: village_interfaces
            1 package had stderr output: village_interfaces
          
          小鱼小 1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @87725837
            最后由 编辑

            @87725837 排除一些环境因素先,可以尝试在root下构建:

            在oem@oem-ThinkPad-X1-Yoga-3rd:~/town_ws$目录下执行如下命令:

            sudo su
            source /opt/ros/foxy/setup.bash
            rm -rf build install log
            colcon build

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            8 1 条回复 最后回复 回复 引用 0
            • 8
              Egoist @小鱼
              最后由 编辑

              @小鱼
              结果如下:

              oem@oem-ThinkPad-X1-Yoga-3rd:~/town_ws$ sudo su 
              [sudo] oem 的密码: 
              root@oem-ThinkPad-X1-Yoga-3rd:/home/oem/town_ws# source /opt/ros/foxy/setup.bash 
              root@oem-ThinkPad-X1-Yoga-3rd:/home/oem/town_ws# rm -rf build/ install/ log/
              root@oem-ThinkPad-X1-Yoga-3rd:/home/oem/town_ws# colcon build
              Starting >>> village_interfaces
              Starting >>> village_li
              Starting >>> village_wang
              Finished <<< village_li [1.37s]                                        
              --- stderr: village_interfaces                                             
              make[1]: *** 没有规则可制作目标“village_interfaces__py/CMakeFiles/village_interfaces__py.dir/all”,由“CMakeFiles/village_interfaces__python.dir/all” 需求。 停止。
              make[1]: *** 正在等待未完成的任务....
              make: *** [Makefile:146:all] 错误 2
              ---
              Failed   <<< village_interfaces [2.91s, exited with code 2]
              Aborted  <<< village_wang [8.64s]                                
              
              Summary: 1 package finished [9.06s]
                1 package failed: village_interfaces
                1 package aborted: village_wang
                1 package had stderr output: village_interfaces
              root@oem-ThinkPad-X1-Yoga-3rd:/home/oem/town_ws# 
              

              自定义消息的包还是一样的报错

              小鱼小 1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @87725837
                最后由 编辑

                @87725837 尝试开一个新的工作空间,下载我的代码,进行构建测试,再排除下代码问题,代码地址:https://github.com/fishros/ros2_town

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                8 1 条回复 最后回复 回复 引用 0
                • 8
                  Egoist @小鱼
                  最后由 编辑

                  @小鱼 结果如下:

                  oem@oem-ThinkPad-X1-Yoga-3rd:~$ git clone https://github.com/fishros/ros2_town
                  正克隆到 'ros2_town'...
                  remote: Enumerating objects: 1134, done.
                  remote: Counting objects: 100% (1134/1134), done.
                  remote: Compressing objects: 100% (510/510), done.
                  remote: Total 1134 (delta 556), reused 1053 (delta 477), pack-reused 0
                  接收对象中: 100% (1134/1134), 1.44 MiB | 701.00 KiB/s, 完成.
                  处理 delta 中: 100% (556/556), 完成.
                  oem@oem-ThinkPad-X1-Yoga-3rd:~$ cd ros2_town/
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ ls
                  README.md  src
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ cd src/
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town/src$ ls
                  village_interfaces  village_li  village_wang  village_zhang
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town/src$ cd ..
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ coclon build
                  coclon:未找到命令
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ colcon build
                  Starting >>> village_interfaces
                  --- stderr: village_interfaces                             
                  make[1]: *** 没有规则可制作目标“village_interfaces__py/CMakeFiles/village_interfaces__py.dir/all”,由“CMakeFiles/village_interfaces__python.dir/all” 需求。 停止。
                  make[1]: *** 正在等待未完成的任务....
                  make: *** [Makefile:146:all] 错误 2
                  ---
                  Failed   <<< village_interfaces [3.35s, exited with code 2]
                  
                  Summary: 0 packages finished [3.86s]
                    1 package failed: village_interfaces
                    1 package had stderr output: village_interfaces
                    3 packages not processed
                  oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ 
                  
                  小鱼小 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @87725837
                    最后由 编辑

                    @87725837 在 ros2 foxy 自定义消息接口编译 “没有规则可制作目标” 中说:

                    coclon build
                    coclon:未找到命令
                    oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ colcon build

                    可以确定是环境问题了,应该和你混装ros和ros2造成的,请附上你的 ~/.bashrc 文件内容,进一步检查环境。

                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                    8 1 条回复 最后回复 回复 引用 0
                    • 8
                      Egoist @小鱼
                      最后由 编辑

                      @小鱼

                      # ~/.bashrc: executed by bash(1) for non-login shells.
                      # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
                      # for examples
                      
                      # If not running interactively, don't do anything
                      case $- in
                          *i*) ;;
                            *) return;;
                      esac
                      
                      # don't put duplicate lines or lines starting with space in the history.
                      # See bash(1) for more options
                      HISTCONTROL=ignoreboth
                      
                      # append to the history file, don't overwrite it
                      shopt -s histappend
                      
                      # for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
                      HISTSIZE=1000
                      HISTFILESIZE=2000
                      
                      # check the window size after each command and, if necessary,
                      # update the values of LINES and COLUMNS.
                      shopt -s checkwinsize
                      
                      # If set, the pattern "**" used in a pathname expansion context will
                      # match all files and zero or more directories and subdirectories.
                      #shopt -s globstar
                      
                      # make less more friendly for non-text input files, see lesspipe(1)
                      [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
                      
                      # set variable identifying the chroot you work in (used in the prompt below)
                      if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
                          debian_chroot=$(cat /etc/debian_chroot)
                      fi
                      
                      # set a fancy prompt (non-color, unless we know we "want" color)
                      case "$TERM" in
                          xterm-color|*-256color) color_prompt=yes;;
                      esac
                      
                      # uncomment for a colored prompt, if the terminal has the capability; turned
                      # off by default to not distract the user: the focus in a terminal window
                      # should be on the output of commands, not on the prompt
                      #force_color_prompt=yes
                      
                      if [ -n "$force_color_prompt" ]; then
                          if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
                      	# We have color support; assume it's compliant with Ecma-48
                      	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
                      	# a case would tend to support setf rather than setaf.)
                      	color_prompt=yes
                          else
                      	color_prompt=
                          fi
                      fi
                      
                      if [ "$color_prompt" = yes ]; then
                          PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
                      else
                          PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
                      fi
                      unset color_prompt force_color_prompt
                      
                      # If this is an xterm set the title to user@host:dir
                      case "$TERM" in
                      xterm*|rxvt*)
                          PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
                          ;;
                      *)
                          ;;
                      esac
                      
                      # enable color support of ls and also add handy aliases
                      if [ -x /usr/bin/dircolors ]; then
                          test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
                          alias ls='ls --color=auto'
                          #alias dir='dir --color=auto'
                          #alias vdir='vdir --color=auto'
                      
                          alias grep='grep --color=auto'
                          alias fgrep='fgrep --color=auto'
                          alias egrep='egrep --color=auto'
                      fi
                      
                      # colored GCC warnings and errors
                      #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
                      
                      # some more ls aliases
                      alias ll='ls -alF'
                      alias la='ls -A'
                      alias l='ls -CF'
                      
                      # Add an "alert" alias for long running commands.  Use like so:
                      #   sleep 10; alert
                      alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
                      
                      # Alias definitions.
                      # You may want to put all your additions into a separate file like
                      # ~/.bash_aliases, instead of adding them here directly.
                      # See /usr/share/doc/bash-doc/examples in the bash-doc package.
                      
                      if [ -f ~/.bash_aliases ]; then
                          . ~/.bash_aliases
                      fi
                      
                      # enable programmable completion features (you don't need to enable
                      # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
                      # sources /etc/bash.bashrc).
                      if ! shopt -oq posix; then
                        if [ -f /usr/share/bash-completion/bash_completion ]; then
                          . /usr/share/bash-completion/bash_completion
                        elif [ -f /etc/bash_completion ]; then
                          . /etc/bash_completion
                        fi
                      fi
                      
                      
                      source ~/realsense_ws/devel/setup.bash
                      
                      # >>> fishros initialize >>>
                      echo "ros:foxy(1) noetic(2) ?"
                      read choose
                      case $choose in
                      1) source  /opt/ros/foxy/setup.bash;;
                      2) source  /opt/ros/noetic/setup.bash;;
                      esac
                      # <<< fishros initialize <<<
                      
                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小鱼小
                        小鱼 技术大佬 @87725837
                        最后由 编辑

                        @87725837 在 ros2 foxy 自定义消息接口编译 “没有规则可制作目标” 中说:

                        source ~/realsense_ws/devel/setup.bash

                        请去掉这句后再次测试,这是ros1的命令,可能会环境变量产生很大影响

                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                        8 1 条回复 最后回复 回复 引用 0
                        • 8
                          Egoist @小鱼
                          最后由 编辑

                          还是不行
                          这是我删掉bashrc里那句话后重新开的终端进行编译的结果:

                          ros:foxy(1) noetic(2) ?
                          1
                          oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ rm -r build/ log/ install/
                          oem@oem-ThinkPad-X1-Yoga-3rd:~/ros2_town$ colcon build --packages-select village_interfaces
                          Starting >>> village_interfaces
                          --- stderr: village_interfaces                             
                          make[1]: *** 没有规则可制作目标“village_interfaces__py/CMakeFiles/village_interfaces__py.dir/all”,由“CMakeFiles/village_interfaces__python.dir/all” 需求。 停止。
                          make[1]: *** 正在等待未完成的任务....
                          make: *** [Makefile:146:all] 错误 2
                          ---
                          Failed   <<< village_interfaces [2.33s, exited with code 2]
                          
                          Summary: 0 packages finished [2.71s]
                           1 package failed: village_interfaces
                           1 package had stderr output: village_interfaces
                          
                          1 条回复 最后回复 回复 引用 0
                          • 第一个帖子
                            最后一个帖子
                          皖ICP备16016415号-7
                          Powered by NodeBB | 鱼香ROS