Building and installing processes

Andreas Pakulat apaku at gmx.de
Fri Aug 24 11:24:38 UTC 2012


Hi,

On Fri, Aug 24, 2012 at 12:51 PM, Aleix Pol <aleixpol at kde.org> wrote:
> On Fri, Aug 24, 2012 at 7:38 AM, Andreas Pakulat <apaku at gmx.de> wrote:
>> On Fri, Aug 24, 2012 at 12:28 AM, Aleix Pol <aleixpol at kde.org> wrote:
>>> Hi co-kdevelopers,
>>> Right now our IProjectBuilders have an IPB::build and an IPB::install.
>>> It works great, but it has some small integration problems for us
>>> (cmake).
>>>
>>> When you install, you first build then install, but cmake does first
>>> the build then build+install. So the first part can be omitted. Also
>>> this generates 2 output views so you don't get to see the warnings.
>>
>> Why? I just looked at the code and CMakeBuilder::install only calls
>> MakeBuilder::install which merely runs "make install".
>> CMakeBuilder::install may also run cmake first and that would be a
>> possibly separate outputview, but thats a different thing already
>> IMHO.
>>
>> So are you saying that the "install" action first runs
>> IProjectBuilder::build and then IProjectBuilder::install? Maybe thats
>> a bit too much dependency-management on our side and we should simply
>> drop it? After all a build-system is called a build-system because it
>> should take care of first building what needs to be built before
>> installing it anyway. I'd consider any buildsystem not doing this to
>> be broken.
>
> What I mean is that "install" itself is building already, so the build
> step is redundant, for cmake. We could call install/fast otherwise
> (with the make builder).

Yes, I got that much. I'm merely wondering which code is running
IProjectBuilder::build and then IProjectBuilder::install. I couldn't
find any actually and I'd say if there is such code it should be
reduced to calling just ::install.

A buildsystem (ninja, make, whatever-your-custom-one-is) should always
allow to setup dependencies between the install rules and the stuff
thats needed to build before it can be installed. A buildsystem that
requires a human user to always run make before make install is just
broken and not supported by kdevelop. IMHO thats a reasonable
restriction to have.

Hence KDevelop can simply always issue just IProjectBuilder::install()
and the CMake Builder implementation should then just issue "make
install".

Andreas




More information about the KDevelop-devel mailing list