[cmake-developers] Printing the origin of include dirs

Stephen Kelly steveire at gmail.com
Tue Dec 18 11:02:47 EST 2012


Brad King wrote:

> On 12/18/2012 10:29 AM, Stephen Kelly wrote: 
>> 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.

I didn't look into the implementation of it yet. By 'intern', you mean 
storing const char * instead of std::string with the cmListFileBacktrace 
object, and maintaining the strings elsewhere (globally?)?

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

Yes. Do you have any idea of what you'd like to see generalized? The 
interception and struct for handling the INCLUDE_DIRECTORIES property 
itself?

> 
> 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.  

Yes. It's not a great name.

>    Perhaps
>    CMAKE_DEBUG_TARGET_PROPERTIES=INCLUDE_DIRECTORIES?

Do you mean 

 set(CMAKE_DEBUG_TARGET_PROPERTIES INCLUDE_DIRECTORIES)

?

That would be fine if the arg can be a list.

 set(CMAKE_DEBUG_TARGET_PROPERTIES 
    "INCLUDE_DIRECTORIES;COMPILE_DEFINITIONS"
 )

but then I don't think it's much better than:

 set(CMAKE_DEBUG_TARGET_INCLUDE_DIRECTORIES ON)
 set(CMAKE_DEBUG_TARGET_COMPILE_DEFINITIONS ON)


Thanks for the feedback,

Steve.





More information about the cmake-developers mailing list