Nevermind, I had an error in the other package's manifest, and it was exporting linker definitions that were not necessary. Thanks again, Mike On 4/18/2011 1:25 PM, Mike Vande Weghe wrote: > Darn, that was an obvious mistake. I should have seen that. > > Well, that seems to have fixed the dependency problem, but now it's > introducing a new error in the way the code is generated: > > [100%] Building CXX object CMakeFiles/mytraj.dir/MyTraj.o > Linking CXX shared library ../lib/libmytraj.so > /usr/bin/ld: > /homes/mvandewe/pr/branches/mike/owd/lib/libopenwam.a(Trajectory.o): > relocation R_X86_64_32 against `.bss' can not be used when making a > shared object; recompile with -fPIC > /homes/mvandewe/pr/branches/mike/owd/lib/libopenwam.a: could not read > symbols: Bad value > collect2: ld returned 1 exit status > make[3]: *** [../lib/libmytraj.so] Error 1 > > Is the rosbuild_add_library() setting different compile flags than > cmake's own add_library()? I wasn't getting this error before, and my > compiled library loaded just fine, too. > > Thanks, > > Mike > > On 4/18/2011 12:16 PM, Brian Gerkey wrote: >> 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. >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users >> > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users >