Re: [ros-users] rosmake doesn't wait for rosbuild_gensrv to …

トップ ページ
添付ファイル:
Eメールのメッセージ
+ (text/plain)
このメッセージを削除
このメッセージに返信
著者: User discussions
日付:  
To: User discussions
題目: Re: [ros-users] rosmake doesn't wait for rosbuild_gensrv to complete
On Mon, Apr 18, 2011 at 8:50 AM, Mike Vande Weghe <> wrote:
> I've noticed that for a package that defines a single ROS service and
> that builds a single shared library, the compilation fails the first
> time through because the header file for the service has not yet been
> completed.  When I do a second rosmake the compilation succeeds.  Do
> service generation and code compilation happen in parallel, and if so is
> there a way to order them?
>
> My CMakeLists.txt looks like this:
> -------------------------------------------------------
> cmake_minimum_required(VERSION 2.4.6)
> include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
>
> rosbuild_init()
> rosbuild_gensrv()
>
> add_library(mytraj SHARED MyTraj.cpp)
> -------------------------------------------------------


You're calling CMake's `add_library()` directly, which doesn't offer
rosbuild the opportunity to set up dependencies. It also doesn't
bring in ROS-related build flags, e.g., from packages that your
package depends on.

I recommend calling `rosbuild_add_library()` instead:
rosbuild_add_library(mytraj MyTraj.cpp)
You don't need to supply the SHARED flag. Building of static and
shared libs for rosbuild is controlled via the `ROS_BUILD_STATIC_LIBS`
and `ROS_BUILD_SHARED_LIBS` variables (but note that static libs are
not well-exercised).

    brian.