C++ Logo


Advanced search

Re: [SG15] module source suffixes

From: Olga Arkhipova <olgaark_at_[hidden]>
Date: Tue, 27 Aug 2019 16:45:57 +0000
IDE needs to build all module sources (if they are not already built) so their BMIs can be used in intellisense when user is editing some code which is using those modules. Before all BMIs for all modules used in the code are available, a code cannot be compiled (i.e. no semantic colorization, autocompletion, etc. in the editor).

To be able to build modules in the correct order, all module interface sources needs to be parsed for module names and dependencies. Parsing all codebase for potential modules will (in most cases) take significantly more time than just parsing module interface files, so we'd really like to avoid this.

The type of a c/c++ file is currently determined by looking at what compiler options are set for it in a project (when available) or file extension (when no project contains the file). So module interface files will be the ones which will be built with /module:interface (in MSVC case) according to the project settings (or again, when no project or no specific setting, with special extension).

So if you want a .cpp file to be compiled as a module, you'll have to modifying some project settings for it, similar to if you want .c file to be compiled as cpp.


-----Original Message-----
From: Matthew Woehlke <mwoehlke.floss_at_gmail.com>
Sent: Tuesday, August 27, 2019 7:55 AM
To: sg15_at_[hidden]
Cc: Olga Arkhipova <olgaark_at_microsoft.com>
Subject: Re: [SG15] module source suffixes

On 26/08/2019 23.49, Olga Arkhipova via SG15 wrote:
> You still will be able to do it, but at least in MSVC case you'll have to explicitly tell the compiler (by setting /module:interface switch) that this cpp file is actually a module.

Isn't that the build-system's responsibility?

You previously stated that the *IDE* needs to specially handle module interface files. Why?


Received on 2019-08-27 11:48:02