What are the plans with CamelCase includes?
David Faure
faure at kde.org
Thu Jan 2 10:35:43 UTC 2014
On Thursday 02 January 2014 07:45:12 Kevin Ottens wrote:
> On Thursday 02 January 2014 00:31:05 David Faure wrote:
> > On Tuesday 31 December 2013 14:48:13 Aleix Pol wrote:
> > > > -- Up-to-date:
> > > > /d/kde/inst/kde_frameworks/include/KF5/kcoreaddons/kaboutdata.h
> > > > -- Up-to-date:
> > > > /d/kde/inst/kde_frameworks/include/KF5/KCoreAddons/KAboutData
> > > >
> > > > The email thread "RFC Rules for installation of header files" does say
> > > >
> > > > >>> If the header files of a framework are not prefixed, then they
> > > > >>> should
> > > > >>> be installed in include/{lowercaseframework} and convenience
> > > > >>> headers
> > > > >>> should be installed in include/KDE/{CamelCaseFramework}.
> >
> > Actually, what's the reason for lowercaseframework there?
> >
> > I used that in all the modules I converted (except KIO, I just realized),
> > and I'm wondering what the point is.
> >
> > Example:
> > include/KF5/KIOCore/KFileItem
> > include/KF5/KIOCore/kfileitem.h
> > works fine with KIOCore in the include path, apps just include <KFileItem>
> > or <kfileitem.h>
> >
> > If I fix it to
> > include/KF5/KIOCore/KFileItem
> > include/KF5/kiocore/kfileitem.h [all lowercase]
> > it will of course work too, with both dirs in the include path.
> >
> > It's all transparent for the apps either way, since the cmake magic
> > encapsulates it for the them.
> >
> > I'm just wondering what's the point in using two different dirs for
> > kfileitem.h and KFileItem?
>
> This wasn't intended I guess. When the discussion about include files
> occured the consensus was to have everything in a single directory (the
> camel cased one).
OK I initially thought it was so the implementation of ecm_generate_headers is
simpler (lowercase everything), but in fact that's not it, it lowercases
individual parts explicitely.
In fact if we only use a camelcase header, the CMakeLists.txt code is even
simpler because the INSTALL(DIRECTORY) line will install both kinds of
headers. Which removes the need for the KCoreAddons_HEADERS variable
altogether.
See attached patch.
Aleix, any objections?
I'll script this over all modules, if not.
I think the reasoning might have been: so that people can include
<kcoreaddons/krandom.h>. But I'm not sure we even want to allow that.
It breaks the whole idea that "the install dir is transparent to the apps",
the idea of compile-time errors (header not found) when not linking to the
appropriate lib, and of course it will break when we move stuff around for
kf6.
Well, we can't physically prevent people from writing #include
<KCoreAddons/krandom.h> or <KCoreAddons/KRandom>, but the fact that the first
one looks weird will at least reduce the chances of people doing that :)
--
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE, in particular KDE Frameworks 5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kcoreaddons.diff
Type: text/x-patch
Size: 2121 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20140102/c45eb90f/attachment-0001.diff>
More information about the Kde-frameworks-devel
mailing list