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?