Building and installing processes

Aleix Pol aleixpol at kde.org
Fri Aug 24 11:39:37 UTC 2012


On Fri, Aug 24, 2012 at 1:24 PM, Andreas Pakulat <apaku at gmx.de> wrote:
> 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
>
> --
> KDevelop-devel mailing list
> KDevelop-devel at kdevelop.org
> https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel

Yes, it's in executeplugin.cpp:144.
Ok so we can just drop the ::Build line there and be happy? Works for me :)

Aleix




More information about the KDevelop-devel mailing list