micander / atrias

Automatically exported from code.google.com/p/atrias
0 stars 0 forks source link

Rethink Controller build system #137

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Currently our controller packages depend on Orocos, and I believe they also 
depend upon libgtkmm. This becomes a problem when you want to build a 
controller on a computer that is either dedicated only to being a GUI computer, 
or only a robot controller. In this situation it would be nice to be able to 
build the GUI and the controller component separately. It would be nice not to 
have to separate them into different packages, but I'm not sure what rosmake 
can do.

Original issue reported on code.google.com by kit...@gmail.com on 1 Nov 2012 at 6:46

GoogleCodeExporter commented 9 years ago
What makes you believe Orocos depends on libgtkmm? I can't find gtkmm mentioned 
in any of the CMakeLists.txt or XML files in orocos_toolchain.

But I agree it would be nice to be able to separate the two, considering the 
ridiculous amount of time RTT-related things take to build.

I'll take this on.

Original comment by yoos117@gmail.com on 9 Nov 2012 at 11:52

GoogleCodeExporter commented 9 years ago
Orocos does not depend upon libgtkmm, but I thought that the controller GUIs 
do. In order to build the GUI portion of a controller, I thought you had to 
have gtkmm installed. I could be wrong about that though. 

Original comment by kit...@gmail.com on 10 Nov 2012 at 1:51

GoogleCodeExporter commented 9 years ago
Major reading comprehension fail on my end, sorry. :)

Original comment by yoos117@gmail.com on 12 Nov 2012 at 6:20

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
There now exists a file named atrias.cmake in the atrias package containing two 
CMake directives:

set(ATRIAS_BUILD_GUI 1)
set(ATRIAS_BUILD_CONTROLLERS 1)

One or both of these can be set to zero to disable the build.

The GUI and controller targets will self-disable if the GTK libraries and 
Orocos RTT package (respectively) are not found.

In order to achieve this, I had to remove all references to rtt and rtt-rosnode 
in the manifest.xml of our packages and instead find necessary packages with 
rosbuild_find_ros_package() in the CMakeLists.txt. This is probably what ROS 
abstracts away using manifest.xml, anyway, so it's not too bad.

Original comment by yoos117@gmail.com on 28 Nov 2012 at 6:11