パッケージをビルドする

自分のパッケージのシステム依存がインストールされていれば、新しいパッケージをビルドすることができます。

Note: aptやその他のパッケージマネージャーを使ってROSをインストールした場合はパッケージの依存関係は解消されています。

作業を続ける前に、環境セットアップファイルをsourceコマンドで忘れずに設定しておきましょう。Ubuntuで環境を構築しているなら、以下のようにして設定します:

$ source /opt/ros/hydro/setup.bash

catkin_makeを使う

catkin_makeは標準的なcatkinのワークフローを便利にするコマンドラインツールです。catkin_makeは標準的なCMakeのワークフローのcmakemakeの呼び出しを結合していると想像できるでしょう。

使い方:

#catkinワークスペースの中で
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

標準的なCMakeのワークフローに慣れていない人は、以下の説明を参考にしてください:

Note: これはCMakeが一般的にどう働くかの単なる一例ですので、以下のコマンドを走らせても動作しません。

# CMakeのプロジェクトの中で
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install  # (optionally)

このプロセスはそれぞれのCMakeのプロジェクトごとに実行されます。これとは対照的に、catkinプロジェクトではワークスペース単位で一緒にビルドされます。ワークスペース内のゼロから多数までのcatkinパッケージをビルドするには以下のワークフローに従います:

# catkin ワークスペースの中で
$ catkin_make
$ catkin_make install  # (optionally)

上記のコマンドは、srcの中のいかなるcatkinプロジェクトをもビルドします。これはREP128の推奨方針に従っています。もし自分のソースコードがmy_srcといった違う場所にあるときは、catkin_makeを以下のように呼びます:

Note: my_srcが存在しなければ、以下のコマンドを実行しても動作しません。

# catkin ワークスペースの中で
$ catkin_make --source my_src
$ catkin_make install --source my_src  # (optionally)

catkin_makeのより高度な使い方については、 catkin/commands/catkin_makeのドキュメントを参照してください。

自分のパッケージをビルドする

自分のコードをビルドする人は、CMakeLists.txtを編集する必要があるかもしれませんので、後で扱うチュートリアル(C++)/(Python) も、参照してください。

前のチュートリアルパッケージの作成catkin workspacebeginner_tutorialsと名付けた新しいcatkinパッケージがあるはずです。このcatkinワークスペースの中に入り、srcフォルダの中を見てみましょう。

$ cd ~/catkin_ws/
$ ls src
  • beginner_tutorials/  CMakeLists.txt@  

前のチュートリアルでcatkin_create_pkgのコマンドで作ったbeginner_tutorialsフォルダがあるのが確認できたら、catkin_makeコマンドを使ってパッケージをビルドできます。

$ catkin_make

以下のような出力に似た、cmakeからの出力やmakeの出力を見るでしょう。

  • Base path: /home/user/catkin_ws
    Source space: /home/user/catkin_ws/src
    Build space: /home/user/catkin_ws/build
    Devel space: /home/user/catkin_ws/devel
    Install space: /home/user/catkin_ws/install
    ####
    #### Running command: "cmake /home/user/catkin_ws/src
    -DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel
    -DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install" in "/home/user/catkin_ws/build"
    ####
    -- The C compiler identification is GNU 4.2.1
    -- The CXX compiler identification is Clang 4.0.0
    -- Checking whether C compiler has -isysroot
    -- Checking whether C compiler has -isysroot - yes
    -- Checking whether C compiler supports OSX deployment target flag
    -- Checking whether C compiler supports OSX deployment target flag - yes
    -- Check for working C compiler: /usr/bin/gcc
    -- Check for working C compiler: /usr/bin/gcc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel
    -- Using CMAKE_PREFIX_PATH: /opt/ros/groovy
    -- This workspace overlays: /opt/ros/groovy
    -- Found PythonInterp: /usr/bin/python (found version "2.7.1") 
    -- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc
    -- Found gtest: gtests will be built
    -- catkin 0.5.51
    -- BUILD_SHARED_LIBS is on
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- ~~  traversing packages in topological order:
    -- ~~  - beginner_tutorials
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- +++ add_subdirectory(beginner_tutorials)
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/user/catkin_ws/build
    ####
    #### Running command: "make -j4" in "/home/user/catkin_ws/build"
    ####

catkin_makeがそれぞれどこの'spaces'を使っているかのpathsを最初に表示していることに注意してください。この領域についての詳細はREP128とwikiのcatkinワークスペースについてのドキュメントcatkin/workspacesに記載されています。注目すべき重要なことは、自分のcatkinワークスペース内に作られたフォルダがこれらのデフォルト値となっていることです。lsを使って見てみましょう。

$ ls
  • build
    devel
    src

buildフォルダはbuild spaceのデフォルト位置で、cmakemakeが環境設定しパッケージをビルドする場所です。develフォルダはdevel spaceのデフォルト位置で、自分のパッケージのインストールに先んじて、実行ファイルとライブラリが入る場所です。

Wiki: ja/ROS/Tutorials/catkin/BuildingPackages (last edited 2014-10-06 06:50:41 by Moirai)