C++の実行可能ファイルがmakeしても作成されない

994 views
Skip to first unread message

sumij...@gmail.com

unread,
Oct 29, 2013, 10:19:53 PM10/29/13
to ros-jap...@googlegroups.com
住吉谷です。

Tutorialsの
1.シンプルな配信者と購読者を書く(C++)

1.C++でシンプルなサービスとクライアントを書く

に従いながら進めていたのですが、
どうもrosmakeあるいはmakeをしてもC++の実行可能ファイルがうまく作成されず、困っています。

C++のコンパイルとは別の部分でのエラーも含まれているようでやや面倒になっているかもしれませんが、
どこに問題がありそうか、ご教示いただければ幸いです。
どうぞよろしくお願いします。



<端末におけるmake結果>
junss@junss-Lenovo-G550:~/ros_workspace/beginner_tutorials$ make
mkdir -p bin
cd build && cmake -Wdev -DCMAKE_TOOLCHAIN_FILE=/opt/ros/groovy/share/ros/core/rosbuild/rostoolchain.cmake  ..
-- Action Files:DoDishes.action
-- Generating Messages for ActionDoDishes.action
-- Using CATKIN_DEVEL_PREFIX: /home/junss/ros_workspace/beginner_tutorials/build/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/groovy
-- This workspace overlays: /opt/ros/groovy
-- Using Debian Python package layout
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/junss/ros_workspace/beginner_tutorials/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- catkin 0.5.74
-- /home/junss/ros_workspace/beginner_tutorials/msg/DoDishesAction.msg
[rosbuild] Building package beginner_tutorials
[rosbuild] Including /opt/ros/groovy/share/roslisp/rosbuild/roslisp.cmake
[rosbuild] Including /opt/ros/groovy/share/roscpp/rosbuild/roscpp.cmake
[rosbuild] Including /opt/ros/groovy/share/rospy/rosbuild/rospy.cmake
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_TOOLCHAIN_FILE


-- Build files have been written to: /home/junss/ros_workspace/beginner_tutorials/build
cd build && make 
make[1]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[2]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[  2%] Built target ROSBUILD_genaction_msgs
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[  2%] Built target rosbuild_premsgsrvgen
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[  7%] Built target ROSBUILD_gensrv_py
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[ 10%] Built target ROSBUILD_gensrv_lisp
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[ 12%] Built target ROSBUILD_gensrv_cpp
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[ 12%] Built target rospack_gensrv
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[ 40%] Built target ROSBUILD_genmsg_py
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
[ 42%] Generating ../msg_gen/lisp/DoDishesAction.lisp, ../msg_gen/lisp/_package.lisp, ../msg_gen/lisp/_package_DoDishesAction.lisp
Traceback (most recent call last):
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 871, in <module>
    generate_msg(sys.argv[1])
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 743, in generate_msg
    write_md5sum(s, spec)
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 596, in write_md5sum
    compute_files=False)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/gentools.py", line 318, in get_dependencies
    _add_msgs_depends(rospack, spec, deps, package)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/gentools.py", line 115, in _add_msgs_depends
    _add_msgs_depends(rospack, depspec, deps, package_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/gentools.py", line 115, in _add_msgs_depends
    _add_msgs_depends(rospack, depspec, deps, package_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/gentools.py", line 108, in _add_msgs_depends
    key, depspec = roslib.msgs.load_by_type(t, package_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/msgs.py", line 575, in load_by_type
    return load_from_file(m_f, pkg)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/msgs.py", line 663, in load_from_file
    f = open(file_path, 'r')
IOError: [Errno 2] No such file or directory: '/home/junss/ros_workspace/beginner_tutorials/msg/unit32.msg'
make[3]: *** [../msg_gen/lisp/DoDishesAction.lisp] エラー 1
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[2]: *** [CMakeFiles/ROSBUILD_genmsg_lisp.dir/all] エラー 2
make[2]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make: *** [all] エラー 2



<CMakeLists.txt>
cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)

# Set the build type.  Options are:
#  Coverage       : w/ debug symbols, w/o optimization, w/ code-coverage
#  Debug          : w/ debug symbols, w/o optimization
#  Release        : w/o debug symbols, w/ optimization
#  RelWithDebInfo : w/ debug symbols, w/ optimization
#  MinSizeRel     : w/o debug symbols, w/ optimization, stripped binaries
#set(ROS_BUILD_TYPE RelWithDebInfo)

rosbuild_find_ros_package(actionlib_msgs)
include(${actionlib_msgs_PACKAGE_PATH}/cmake/actionbuild.cmake)
genaction()

rosbuild_init()

#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

#uncomment if you have defined messages
rosbuild_genmsg()
#uncomment if you have defined services
rosbuild_gensrv()

#common commands for building c++ executables and libraries
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp)
#target_link_libraries(${PROJECT_NAME} another_library)
#rosbuild_add_boost_directories()
#rosbuild_link_boost(${PROJECT_NAME} thread)
#rosbuild_add_executable(example examples/example.cpp)
#target_link_libraries(example ${PROJECT_NAME})
rosbuild_add_executable(talker src/talker.cpp)
rosbuild_add_executable(listener src/listener.cpp)
rosbuild_add_executable(add_two_ints_client src/add_two_ints_client.cpp)
rosbuild_add_executable(add_two_ints_server src/add_two_ints_server.cpp)




Kei Okada

unread,
Oct 29, 2013, 10:31:40 PM10/29/13
to ros-jap...@googlegroups.com
unit32
uint32
の間違いでしょうか?
自分で作ったmsg,srv,actionファイルを確認して見てください

2013年10月30日水曜日 sumij...@gmail.com:
--
このメールは Google グループのグループ「ROS JAPAN User's Group」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、ros-japan-use...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

住吉谷淳

unread,
Oct 30, 2013, 6:41:23 AM10/30/13
to ros-jap...@googlegroups.com
岡田先生

住吉谷です。

ご返信いただきありがとうございます。

ご指摘通り、actionファイルに
uint32 を unit32
と間違えているところがありましたので修正しました。

ありがとうございます。


修正のお陰でmakeの結果はややすっきりしたのですが、
やはりc++のコンパイルがうまく行われません。
他にも修正すべき点があればご指摘いただければ幸いです。

よろしくお願いします。



<uint修正後のmake結果>
[  2%] Built target rospack_genmsg_libexe
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[  2%] Built target rosbuild_premsgsrvgen
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
[ 30%] Built target ROSBUILD_genmsg_py
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' に入ります
[ 32%] Generating ../msg_gen/lisp/Hello.lisp, ../msg_gen/lisp/_package.lisp, ../msg_gen/lisp/_package_Hello.lisp
Traceback (most recent call last):
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 871, in <module>
    generate_msg(sys.argv[1])
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 743, in generate_msg
    write_md5sum(s, spec)
  File "/opt/ros/groovy/share/roslisp/rosbuild/scripts/genmsg_lisp.py", line 596, in write_md5sum
    compute_files=False)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/roslib/gentools.py", line 325, in get_dependencies
    raise MsgSpecException("Cannot load type %s.  Perhaps the package is missing a dependency."%(str(e)))
roslib.msgs.MsgSpecException: Cannot load type 'geometry_msgs/Vector3'.  Perhaps the package is missing a dependency.
make[3]: *** [../msg_gen/lisp/Hello.lisp] エラー 1
make[3]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[2]: *** [CMakeFiles/ROSBUILD_genmsg_lisp.dir/all] エラー 2
make[2]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/home/junss/ros_workspace/beginner_tutorials/build' から出ます
make: *** [all] エラー 2




2013年10月30日水曜日 11時31分40秒 UTC+9 Kei:
unit32
uint32
の間違いでしょうか?
自分で作ったmsg,srv,actionファイルを確認して見てください。

 

Kei Okada

unread,
Oct 30, 2013, 6:52:48 AM10/30/13
to ros-jap...@googlegroups.com

住吉谷淳

unread,
Oct 30, 2013, 7:09:01 AM10/30/13
to ros-jap...@googlegroups.com
岡田先生

住吉谷です。

おっしゃる通りでした。

manifest.xmlに 
  <depend package="geometry_msgs"/> 
を追加したところ

>roslib.msgs.MsgSpecException: Cannot load type 'geometry_msgs/Vector3'.  Perhaps the package is missing a dependency.
この部分が解消され、問題なくmakeを行うことができるようになりました。
c++の実行可能ファイルの方も作成されました。

お手数をお掛けしました。
ありがとうございます!



2013年10月30日水曜日 19時52分48秒 UTC+9 Kei:
> このグループから退会し、メールの受信を停止するには、ros-japan-users+unsubscribe@googlegroups.com
Reply all
Reply to author
Forward
0 new messages