[cmake-developers] CMake usage requirements in KDE Frameworks

Alexander Neundorf neundorf at kde.org
Thu Mar 21 16:47:57 EDT 2013


On Thursday 21 March 2013, Brad King wrote:
> On 03/21/2013 02:47 PM, Alexander Neundorf wrote:
> > Still, is the "PUBLIC" part necessary ?
> > IMO PRIVATE and INTERFACE suffice, and for me it seems more
> > straighforward to separate only between these two.
> 
> PRIVATE and INTERFACE are sufficient but need to be duplicated
> to produce the equivalent of PUBLIC.  It is very common for an
> implementation dependency to also be a usage requirement, especially
> for include paths.

Yes, sounds ok.
Still I would prefer the interface to be minimal and orthogonal.

At least for me it is also easier to differentiate between "use this when 
building foo" and "use this when using foo" vs. the three options.

When using this in a project, I'd want to keep my interface include dirs 
clean, i.e. as small as possible. With PUBLIC, PRIVATE and INTERFACE, 
directories can be added to the wrong one (i.e. PUBLIC instead PRIVATE or 
INTERFACE) and it will still build, but the interface will be bigger than 
necessary. With only PRIVATE and INTERFACE this can't happen. If you add it to 
the wrong one, it doesn't build.
PUBLIC looks to me more like a convenience feature, but one which can be 
misused, and it's not strictly necessary.
It may become the default choice for many, since it will be the easiest way to 
make some project compile.

How about keeping PUBLIC out for 2.8.11 and adding it later on if it is really 
found to be missing ?
This way is possible, removing later on is not.

Alex



More information about the cmake-developers mailing list