[cmake-developers] Extracting target metadata, IDE integration

Aleix Pol aleixpol at kde.org
Mon Mar 2 20:26:58 EST 2015


On Tue, Mar 3, 2015 at 2:15 AM, Aleix Pol <aleixpol at kde.org> wrote:
> On Mon, Feb 16, 2015 at 10:44 PM, Alexander Neundorf <neundorf at kde.org> wrote:
>> 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.
>
> You are correct, it would be more useful indeed. Do you know how to
> get the value? I've been trying to figure it out but I can't find the
> correct method in cmTarget.
>
> Aleix

If I'm not correct this can be provided through
GetMakefile()->GetCurrentOutputDirectory(). I'll upload in a moment a
new version with this implemented (and some other things).

Aleix


More information about the cmake-developers mailing list