Clarification about compilation model and the mapping of package names to directory.

Claude via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 29 08:24:25 PDT 2016


On Friday, 29 April 2016 at 14:50:34 UTC, Dicebot wrote:
> On 04/29/2016 05:32 PM, Bruno Medeiros wrote:
>> Imagine you have a module "main.d" with the line `import 
>> xxx.foo;`, and you have a file "foo.d" with the module 
>> declaration `module xxx.foo;`. Now imagine the files are laid 
>> out like this:
>> 
>> src/main.d
>> src/foo.d
>> 
>> Is this valid, should these files compile? Currently DMD will 
>> fail if each file is compiled individually (because it expects 
>> `xxx.foo` to be in "src/xxx/foo.d", *but* it will succeed if 
>> all files are supplied to DMD in the same command-line.
>
> AFAIK yes, this is valid and shall compile (and there are quite 
> some projects relying on it). There is simply a missing feature 
> for separate compilation case to allow supplying import module 
> paths manually.

That means that using the layout above, there is no way to 
compile individually "main.d" or a file named "bar.d" with 
"import xxx.foo;" ??

What if I want to make a library out of bar.d without totally 
compiling foo.d?

I understand there must be some analysis of foo.d to get its 
interface (basically get the ".di" version of it) but it should 
not have to compile its implementation.


More information about the Digitalmars-d mailing list