[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwrite-devel
Subject:    Re: Supporting the CMake file API in the project/build plugin ?
From:       christoph () cullmann ! io
Date:       2023-11-23 18:56:00
Message-ID: 55905f0647a5d1655aa68f7e666e428c () cullmann ! io
[Download RAW message or body]

On 2023-11-20 22:23, Alexander Neundorf wrote:
> On Donnerstag, 16. November 2023 08:20:53 CET christoph@cullmann.io
> wrote:
> 
>> On 2023-11-15 23:09, Alexander Neundorf wrote:
> 
>> > Hi,
> 
>> >
> 
>> > On Donnerstag, 7. September 2023 20:44:07 CET
> christoph@cullmann.io
> 
>> >
> 
>> > wrote:
> 
>> >> On 2023-09-06 23:32, Alexander Neundorf wrote:
> 
>> >> > Hi,
> 
>> >> >
> 
>> >> > currently cmake can generate a kate project file, and then,
> when kate
> 
>> >> > opens
> 
>> >> > some file in the buildtree, e.g. the project file, the kate
> project
> 
>> >> > plugin reads
> 
>> >> > the project file and populates the list of files and the build
> targets.
> 
>> >> > With cmake 3.27 this has been marked officially as obsolete
> (even
> 
>> >> > though the
> 
>> >> > kate project generator gained some features in cmake 3.27).
> 
>> >> >
> 
>> >> > Nevertheless, medium term it would be better if kate would use
> the
> 
>> >> > cmake file
> 
>> >> > API.
> 
>> >> > What would that mean ?
> 
>> >> > kate could search the CMakeCache.txt for CMAKE_PROGRAM, which
> contains
> 
>> >> > the
> 
>> >> > path to the cmake executable which generated this buildtree.
> 
>> >> > Then kate would write some simple json file into the build
> tree, and
> 
>> >> > then rerun
> 
>> >> > cmake on that buildtree.
> 
>> >> > cmake will see the file kate has written, and generate a json
> file
> 
>> >> > which
> 
>> >> > contains the source directory, the list of targets, the source
> files
> 
>> >> > for each
> 
>> >> > target.
> 
>> >> > With this information kate could:
> 
>> >> > - use that list of source files as project files, or use the
> git/svn
> 
>> >> > support in
> 
>> >> > kate to get all files which are in the source directory
> 
>> >> > - get  the list of targets and generate a build target for each
> of
> 
>> >> > them. Those
> 
>> >> > could be executed by running cmake (so it would automatically
> work for
> 
>> >> > any
> 
>> >> > build tree, whether it is ninja, make, or msvc): cmake --build
> 
>> >> > <buildir> --
> 
>> >> > config <Config> --target <target>
> 
>> >> >
> 
>> >> > What do you suggest how this would fit into the project- and
> 
>> >> > build-plugins ?
> 
>> >> > I guess the session support is not related ?
> 
>> >>
> 
>> >> Hi,
> 
>> >>
> 
>> >> thanks for taking a look at that!
> 
>> >>
> 
>> >> I think that would fit into the project plugin as another
> 
>> >> auto-discovery
> 
>> >> mode,
> 
>> >> like we have it for the various version control systems.
> 
>> >>
> 
>> >> There we execute the git/.../... commands.
> 
>> >
> 
>> > I've got a first version working locally here (still Qt5 based).
> 
>> > So I'll clone on gitlab and create a merge request ?
> 
>> 
> 
>> Hi,
> 
>> 
> 
>> Great ;)
> 
>> 
> 
>> Yes, or put it to some work/xxx branch in the
> 
>> main repo, that makes it even easier to try.
> it's here now:
> 
> https://invent.kde.org/utilities/kate/-/commit/54b4b88d3cb470b4226f4ac91ea54d99c0b8eb59

Hi,

thanks that you work on this!

> 
> 
> I haven't actually tried to build it against the KF6 version of kate
> yet, building against Qt6 worked.
> Basically it works, it creates the project, with build rules for all
> targets in all build configurations, the source files taken from the
> cmake files and the correct source dir. It also creates a
> compile_commands.json and copies it to thr source dir.
> I'm not very happy with the usability.
> 
> If the user opens a CMakeCache.txt (or any other file in the build
> tree), it automatically creates a kate project automatically, similar
> to git and svn.
> This is a bit hard to discover, since usually users don't open files
> in the buildtree.
> 
> If the user has opened a file in the source tree before, and git/svn
> auto projects are enabled, no cmake project will be created, i.e. no
> build commands.
> Should I add an explicit entry like "Open CMake build tree" or
> something like this in the project menu ?

I would hope that 'open folder' works for that, I would rather not have 
an
extra entry that just do the same.

> 
> I also wonder whether it should optionally populate the project files
> from the git/svn repos, instead of using the files from the
> CMakeLists.txt.
> Any comments ?

Hmm, that is a good question, the current CMake generated projects do 
that
and I think that worked well.

Greetings
Christoph
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic