http://www.ros.org/wiki/rosbuild says: You can override the system defaults by set()ting different values in three places, listed here in increasing priority (i.e., later settings overwrite earlier ones): The current package's CMakeLists.txt (i.e., the content *preceding* the rosbuild_init() invocation) If present, $(ROS_ROOT)/rosconfig.cmake If present, rosconfig.cmake in the current package's top-level directory But ROS_ROOT/core/rosbuild/rosconfig.cmake says: 3 # To change your build configuration, create a file called 4 # 'rosconfig.cmake' and put it where it will be loaded from here. 5 # The order of processing is the following, with later steps overriding 6 # earlier ones: 7 # - read this file 8 # - if present, read $(ROS_ROOT)/rosconfig.cmake 9 # - if present, read rosconfig.cmake from the current packages's top-level 10 # directory. 11 # - read the rest of the package's CMakeLists.txt (i.e., the content after 12 # the invocation of rospack(), which is how we get here This is contradictory and should be fixed. Also, which explanation is correct?