[cmake-developers] Extracting target metadata, IDE integration

Alexander Neundorf neundorf at kde.org
Mon Feb 16 16:44:01 EST 2015


On Monday, February 16, 2015 21:31:45 Aleix Pol wrote:
> On Sat, Feb 14, 2015 at 1:02 PM, Stephen Kelly <steveire at gmail.com> wrote:
> > Aleix Pol wrote:
> >> Hi guys,
> >> It's been since August with this. I understand we're all busy but this
> >> step is important for KDevelop as well as for other IDE's and I
> >> wouldn't like this to rot.
> >> 
> >> Please, let's keep it moving forward.
> > 
> > As far as I'm aware, it needs to move forward from this point:
> >  http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/10711/fo
> >  cus=12151> 
> > I'm not certain the design is finished (eg what the file should contain
> > now
> > or eventually). I asked for tests/documentation as a way to trigger
> > getting
> > the design finished. Having either would give us a list of use-cases and
> > we
> > would know what's in scope and what's not in scope (eg whether compile
> > options/link options are in scope and why).
> 
> I can look further into documentation, if that's what holding us back.
> 
> > Another question: do you have any opinion about whether this should be one
> > global file or one file per directory? I don't know - it seems like
> > something that might or might not be relevant for tooling. Is the size of
> > the generated file a consideration?
> 
> I think the best is to have it all in 1 directory. You don't really
> want to have watchers on many files over there.
> 
> > How well does this feature work with large projects like VTK or a combined
> > build of LLVM/Clang/lldb/libcxx/other ll projects.
> 
> I just generated the file for LLVM: https://paste.kde.org/pxl8ozwah
> It's a 127KiB file, I don't think it's too mental considering it's a
> 330 MiB repository.

I didn't follow the whole thread, just a few quick questions from looking at 
the file:


{
   "name": "obj2yaml",
   "type": "EXECUTABLE",
   "configs": [
      ],
   "directory": "/home/kde-devel/tmp/llvm/build/bin",
   "location": "/home/kde-devel/tmp/llvm/build/bin/obj2yaml",
   "backtrace": ["/home/kde-devel/tmp/llvm/cmake/modules/AddLLVM.cmake:452",
                 "/home/kde-devel/tmp/llvm/cmake/modules/AddLLVM.cmake:485",
                 "/home/kde-devel/tmp/llvm/tools/obj2yaml/CMakeLists.txt:6"],
   "installed": true
    },


I guess "name" is the name of the target, type, configs, location, backtrace 
and installed seem to be clear.

What about "directory" ?
This is not the build dir where the target is defined (i.e. 
cmake_binary_dir(llvm/tools/obj2yaml/), is it ?
This directory would seem useful to me, e.g. you can run "make help" there to 
get the list of targets to compile/assemble/preprocess the files for that 
target. Or you can run the clean-script for that target.

Alex



More information about the cmake-developers mailing list