[Documentation] [TitleIndex] [WordIndex

  Show EOL distros: 

ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | rosdep | rosemacs | roslang | roslib | rosmake | rospack | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: groovy-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: hydro-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: indigo-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: jade-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: kinetic-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Dirk Thomas <dthomas AT osrfoundation DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: kinetic-devel)
ros: mk | rosbash | rosboost_cfg | rosbuild | rosclean | roscreate | roslang | roslib | rosmake | rosunit

Package Summary

rosbuild contains scripts for managing the CMake-based build system for ROS.

  • Maintainer status: maintained
  • Maintainer: Michel Hidalgo <michel AT ekumenlabs DOT com>, Jacob Perron <jacob AT openrobotics DOT org>
  • Author: Brian Gerkey, Troy Straszheim, Morgan Quigley, Dirk Thomas <dthomas AT openrobotics DOT org>
  • License: BSD
  • Source: git https://github.com/ros/ros.git (branch: noetic-devel)

概要

ROSが用いる中心のビルドツールはCMakeです。CMakeは、構成とmakeの機能を提供する強力なクラスプラットフォームのビルドツールです。

ROSのfuerteのバージョンまで、ROSはrosbuildの一部であるrosmakeと呼ばれるcmakeのラッパースクリプトを使ってROSをビルドされます。 groovyのバージョンではじめるのなら、新しいパッケージにはcatkinがビルドシステムとして、推奨されます。

rosbuildが行ってくれることは、ROSのパッケージツリーからビルドの適切なフラッグをあつめ、依存ファイルを見つけ出すことです。たとえば、rosbuildによって提供されるマクロを用いると、自動的にパッケージが依存するほかのパッケージによって出力されるビルドフラッグたちを引き継ぎます。また、rosbuilddeclaring testsの拡張サポートも提供します。 packagesをビルドするために、rosmakeを使います。

すべてのROSのpackageはトップレベルのディレクトリに以下の3つのファイルを持っていないくてはなりません。

API (CMakeLists.txt ファイルを書く)

rosbuildのほとんどは、パッケージのテストやビルドを管理するために使われるCMakeLists.txtファイルを書くためのAPIです。詳細はAPI ドキュメントをご覧ください. もご覧ください.

クロスコンパイル

ROSは、まだ、クロスコンパイルのための強力なサポートを持っていませんが、non-x86プラットフォームでもROSを準備するのに成功している例もあります。もっと詳しく知りたい場合は、notes on cross-compilingでお探しください。

ビルドをカスタムする。(デバッグ, 最適化, デフォルトビルドフラッグ)

どのようにビルドするか、例えばデバッグや最適化や共有や、静的ライブラリなどでおそらく多くの行いたい変更がでてくると思います。ROSのシステムのデフォルトは$ROS_ROOT/core/rosbuild/rosconfig.cmakeに記されていますが、このファイルは編集しないでください。

以下の変数が、$ROS_ROOT/core/rosbuild/rosconfig.cmakeの中に定義されています。

これらの設定は、優先順位でリストされた以下の3箇所で値を変更して、オーバーライドすることができます。

, たとえば:

  1. もし$(ROS_ROOT)/rosconfig.cmakeがあるなら, 例えば:
    • # 全てのROSのパッケージの静的と共有libが必要なときは(共有はデフォルトで有効です。)
      set(ROS_BUILD_STATIC_LIBS true)
  2. もしrosconfig.cmakeが現在のパッケージのトップレベルのディレクトリにあるなら, 例えば:
    • # I want just static libs, just for this package
      set(ROS_BUILD_STATIC_LIBS true)
      set(ROS_BUILD_SHARED_LIBS false)

注意: パッケージのCMakeLists.txtの設定が、rosconfig.cmakeの設定によって上書きされてしまう点では、この指定の仕方は、あまり直感的ではありません。

ROS #defines

ビルドシステムは、どの操作の段階のコマンドライン上でも以下のプリプロセッサマクロを定義しています。:

== 多種多様の設定==

Intelのコンパイラを使用する

ROSをIntel C/C++のコンパイラでコンパイルするには、まず、IntelのコンパイラをIntelのウェブサイトにしたがってインストールする必要があります。 次に、ROSのパッケージ内のCMakeLists.txtで以下の行を含むように訂正します。 Next, modify your CMakeLists.txt in the ROS package to contain the following lines:

set (CMAKE_C_COMPILER $(INTEL_DIR)/bin/icc)
set (CMAKE_CXX_COMPILER $(INTEL_DIR)/bin/icpc)

set (CMAKE_C_EXECUTABLE $(INTEL_DIR)/bin/xild)
set (CMAKE_CXX_EXECUTABLE $(INTEL_DIR)/bin/xild)

set (CMAKE_C_FLAGS   "-msse3 -ip  -no-prec-div         -parallel -O3 -fPIC" )
set (CMAKE_CXX_FLAGS "-msse3 -ip  -no-prec-div         -parallel -O3 -fPIC" )

set (CMAKE_EXE_LINKER_FLAGS  "-Wl,-rpath,$(INTEL_DIR)/lib -L$(INTEL_DIR)/lib -lguide -lcxaguard -limf -lsvml -lirc -lpthread -lintlc" )

$(INTEL_DIR)がIntelのコンパイラのインストールされているディレクトリです。(例えば,/opt/intel/cc/10.1.008)また、ここで使われている最適化フラグはオプションです。

もしコンパイルしたいパッケージがサードパーティパッケージ(例えばODE)であるときは、Makefilesをカスタマイズし、正しいフラグを設定する必要があります。

ccasheやdistccを使う

ROSのビルドシステムは、ccachedistccを使用することができます。いつもどおり、設定をすれば使用することができます。

例えば、ccacheを有効にするには:

export PATH=/usr/lib/ccache:$PATH

以下を確かめてください。

which gcc

上記がccacheのラッパーを指し示しているか確認してください。(例えば, /usr/lib/ccache/gcc).

例えば, ccacheと一緒にdistccを有効にするには, pre1からpre4という名前の4つのマシンを持っているとしたときに以下のように設定する必要があります:

export DISTCC_HOSTS='@pre1/1 @pre2/1 @pre3/1 @pre4/1'
export CCACHE_PREFIX=distcc

パラレルジョブ

もし、マルチコアのマシンを持っているなら、 , ビルドの際にROS_PARALLEL_JOBSを設定することができます。


2024-03-23 12:39