On Thu, Jul 26, 2012 at 1:59 AM, Dirk Thomas wrote: > We will have migration guide ready before we will announce the general > availability of catkin. > A draft (which is very likely to change in the near future) can currently > be found in the github repository of catkin (https://github.com/ros/** > catkin/tree/master/doc - > especially in rosbuild_migration.rst). > Some further information from the design phase is available at > http://ros.org/doc/fuerte/api/**catkin/html/ > Please keep in mind that the development is currently still ongoing and > some things are likely to change... > Assuming it's up to date, looking at https://github.com/ros/catkin/blob/master/doc/supposed.rst I think gives the best idea of what Catkin expects from developers. It looks like all the headers/libs needed by ros packages needed by a system are stuffed into ${ROS_INCLUDE_DIRS} and ${ROS_LIBRARIES} so this is better than having to call find_package() for every single ros package dependency as the higher-level documentation seemed to suggest. On Thu, Jul 26, 2012 at 1:25 AM, Daniel Stonier wrote: > Not only were these exports hardwired for the whole package, but also made > it impossible to work for other platforms and some cross-compiling > scenarios. Catkin automatically creates config-cmake and pkg-config files > which do this for the user. All that is needed is a very intuitive > find_package call in the cmake. > I agree wholeheartedly, and I have had my own cross-platform experiences trying to make ROS packages that I could easily build on gnulinux and xenomai. It's not trivial. Also I'd like to comment again on naming conventions: >From the example, to use ros packages/stacks in Catkin, you do this: > project(my_package) > find_package(ROS REQUIRED COMPONENTS > cpp_common rostime sensor_msgs) include_directories(${ROS_INCLUDE_DIRS}) > > add_executable(myexec ...) > target_link_libraries(myexec ${ROS_LIBRARIES}) In order to declare a "ros package" you declare a "CMake project" should we start calling them "ros projects"? In order to depend on "ros packages" you find the "ROS CMake package" and require several "ROS components" which doesn't really mean anything on its own. If we assume by default that ROS components are required, we can simplify this a bit for new users (of ros or catkin) by making roscreate-pkg and the tutorials not even use the word "COMPONENTS" since it's an unnecessary argument if you're requiring them, ie: > find_package(ROS REQUIRED > cpp_common rostime sensor_msgs) I've always liked what I've heard and seen of Catkin, I just want to make sure that we don't accidentally build a CMake wall around the ros community that makes it harder for people to get in and join the party.