[cmake-developers] Issuing errors for faulty INTERFACE_INCLUDE_DIRECTORIES

Alexander Neundorf neundorf at kde.org
Tue Mar 26 15:24:26 EDT 2013


On Tuesday 26 March 2013, Brad King wrote:
> On 03/26/2013 02:53 PM, Robert Maynard wrote:
> > My concern with this feature is the use case of a directory not existing
> > at configure time, but which will exist at linking time. Primarily this
> > would occur when an imported library is the result of an
> > add_custom_command call which creates a new directory. While this might
> > be an edge case, I was wondering if we should have a way to skip the
> > verification on a target.
> 
> It is not an edge case.  The add_dependencies command explicitly supports
> adding "dependencies" of an imported target that then transitively become
> dependencies of real targets that use it.  The idea is to have a hand-made
> imported target that references files that will be produced at build time
> by something like ExternalProject.  The hand-made imported target would do
> 
>  add_dependencies(imp_tgt ep_tgt)
> 
> to get build-time dependencies right.  However, that will also mean that
> if one defines INTERFACE_INCLUDE_DIRECTORIES on imp_tgt the paths may not
> exist during CMake configuration.
> 
> I suggest that to support this case we allow the hand-made imported target
> to request that the include interface not be validated:
> 
>  set_property(TARGET imp_tgt PROPERTY
>    INTERFACE_INCLUDE_DIRECTORIES_ALLOW_MISSING 1)
> 
> Ideas for a better name?
> 
> Alternatively one could solve this case with no additional CMake feature
> by hiding the needed paths in $<1:...> generator expressions.  That is not
> as explicit, but I would be okay with that as the recommended solution over
> an awkwardly named property.

Probably I'm missing something obvious... can't the include-directories be 
checked by generating code into the exports-file ?
That's done for the other referenced files too.

Alex



More information about the cmake-developers mailing list