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

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: User discussions
Date:  
To: User discussions
Subject: 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.