Fwd: RFC Rules for installation of header files

Aleix Pol aleixpol at kde.org
Thu Nov 14 16:43:59 UTC 2013


On 14.11.2013 18:31, Aleix Pol wrote:
> On Thu, Nov 14, 2013 at 5:04 PM, Aurélien Gâteau <agateau at kde.org 
> [3]>
> wrote:
>
>> On 10.11.2013 18:27, Kevin Ottens wrote:
>>
>>> Hello,
>>>
>>> On Wednesday 06 November 2013 08:52:29 Aurélien Gâteau wrote:
>>>
>>>> Yesterday frameworks meeting spawned a discussion regarding 
>>>> folders
>>>> in header files.
>>>
>>> I think there's an aspect missing in your proposal. There's the
>>> convention we want for #include and where we install. That's in the
>>> end two different things even though related.
>>>
>>> I think, that for all the frameworks, headers should be installed
>>> in: $PREFIX/include/KF5/FrameworkName/
>>>
>>> FrameworkName would then contain both the regular .h headers and 
>>> the
>>> convenience camel case ones. If we go for that, we get something
>>> consistent install wise and easy to deal with. Then the distinction
>>> you make below is just about the include path we want when someone
>>> pulls a framework in.
>>>
>>>> I think the consensus is there should be two different situations:
>>>>
>>>> 1. 'k' prefixed header files
>>>>
>>>> If the header files of a framework are prefixed with a 'k', then
>>>> headers should be installed in include and convenience headers
>>>> should be installed in include/KDE.
>>>
>>> I think in a case like that we still want the includes installed in
>>> $PREFIX/include/KF5/FrameworkName/ (convenience or not). But when
>>> someone pulls the framework as a dependency then both
>>> $PREFIX/include/KF5/ and $PREFIX/include/KF5/FrameworkName/  are
>>> added in the include path, thus supporting the #include <kfoo.h> 
>>> and
>>> #include <KFoo> styles.
>>
>> To support #include <kfoo.h> and #include <KFoo> you only need to
>> have $PREFIX/include/KF5/FrameworkName/ in the include path. Adding
>> $PREFIX/include/KF5/ would add support for #include
>> <FrameworkName/kfoo.h> and #include <FrameworkName/KFoo>.
>>
>> Do we want to support this as well? (I have no strong opinion on 
>> this
>> topic)
>
> ecm_generate_headers will do it like that anyway

Mmm, this is not about installation path, but about the include path.
Does ecm_generate_headers affects the include path?
>
>  
>
>>>> 2. Non-prefixed header files
>>>>
>>>> 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}.
>>>
>>> I think in a case like that we still want the includes installed in
>>> $PREFIX/include/KF5/FrameworkName/ (convenience or not). But when
>>> someone pulls the framework as a dependency then only
>>> $PREFIX/include/KF5/ is added in the include path, thus supporting
>>> the #include <FrameworkName/foo.h> and #include <FrameworkName/Foo>
>>> styles.
>>>
>>>> Some special files should still go in include:
>>>>
>>>>     {lowercaseframework}_export.h {lowercaseframework}_version.h
>>>
>>> Make that $PREFIX/include/KF5/ instead of just include and I agree.
>>
>> Wouldn't it be more self-contained to have those in
>> $PREFIX/include/KF5/FrameworkName as well?
>>
>> After all, those includes are mostly internal, so they should not be
>> the first files you meet if you wander in $PREFIX/include/KF5 IMO.
>
> They should probably be in frameworkname/frameworkname_export.h.
> Usually we have 2 folders for includes, the camel case for camel case
> includes and the lowercase one with the actual includes.

Unless I am confused, Kevin proposal is to have only one folder:
$PREFIX/include/KF5/$Framework. This folder would contain both lower
case and camel case header files.

Aurélien


More information about the Kde-frameworks-devel mailing list