[cmake-developers] Generating buildsystem metadata from CMake

Stephen Kelly steveire at gmail.com
Sat Apr 4 08:32:51 EDT 2015


On 04/02/2015 10:29 AM, Anton Makeev wrote:
> I see, but how will having include_directories help ‘Add include directory’-like actions?
> I mean, simply having this list (without additional info like backtraces) doesn’t seem to help much.

We'll have to see :).

>> So, in the end, we probably need tooling to be able to get the information 
>> in both forms. Ie, as an array of directories, and as a string of compiler 
>> command line options.
>>
>> We already have the latter in the form of compile-commands.json. One of the 
>> reasons I wonder if you are using that already is to know whether 
>>
>> 1) That is already a good enough solution 
>> or 
>> 2) The new metadata file should contain similar information
>>
>> I'm wondering if we can learn anything from your experience with the 
>> existing file.
> I’m afraid we don’t have much to contribute here, since we don’t use this file at the moment.
> After a brief investigation, it seems to have the necessary command lines we expect in the form
> that can be easily parsed (apart from  -o <path> -c <path> that will need to be cut out, but it’s not a big deal).

I'm sure we can generate content without those lines if we refactor the
Module files a bit.

>
> Just to make sure, you mentioned that this file should be deprecated with this new metadata.json,
> is that correct?

I'm not sure I mentioned that, just that it's an externally defined
format and we didn't want to try to extend it, but instead define a
different format. The new format will hopefully make it unnecessary for
IDEs to parse the compile-commands.json. However, there are other users
of the compile-commands.json, so it will remain and the feature for
generation of it will not be deprecated.


>> Does that make sense? That means you would read the "all_compile_flags" for 
>> the specific source file if it is present, and use the "all_compile_flags" 
>> for the target otherwise (which you already have cached).
> That sounds like a brilliant idea. This way we’ll have minimum duplication and minimum logic required on
> the IDE-side.
>

Great. Good to know this will work for you. I'll integrate the idea into
the next design iteration.

Thanks,

Steve.



More information about the cmake-developers mailing list