[cmake-developers] Printing the origin of include dirs (Was Setting include directories via target_link_libraries() ?)

Brad King brad.king at kitware.com
Tue Dec 18 10:53:03 EST 2012


On 12/18/2012 10:29 AM, Stephen Kelly wrote:
> Or we can add a way to print where include directories come from. That's 
> something that's been on the plans since the beginning, and some of the code 
> and API is already in master for it. 
> 
> More of the useful code for that was in my branch, but it's independent of 
> this whole command API question, so I've cherry-picked it out of there and 
> put it in the include-dirs-debugging branch of my clone. 
> 
> I think it's useful on its own, so I think we should get something like it 
> into 2.8.11.
> 
> Note that the branch is work in progress. Currently the backtrace is not 
> always initialized correctly when include_directories() is used. What do 
> ya'll think of the idea?

Providing backtraces for debugging would be helpful for users.  Here
are a few comments:

1. The cmListFileBacktrace structure was originally created to pass
   context for error messages.  IIRC it carries full strings for each
   level on the stack.  This is pretty heavy to start keeping around
   for everything and we've been accumulating it in more places.
   We may need to "intern" strings to make backtraces lighter.

2. Properties other than INCLUDE_DIRECTORIES may benefit from this.
   The infrastructure could be generalized somewhat and kept directly
   in the property representation structures.

3. I do not like the name "CMAKE_PRINT_INCLUDE_DIR_ORIGINS" to get
   the debug output.  We should establish a naming convention for
   variables that activate debugging features.  Perhaps
   CMAKE_DEBUG_TARGET_PROPERTIES=INCLUDE_DIRECTORIES?

-Brad


More information about the cmake-developers mailing list