The project I'm currently working on is becoming quite large, and is being compiled to a few different lib files. This is useful, so the application and tools only have to link to the libraries they need.

We use DMD's interface generation option to create the header files, which is an awesome feature, but the problem is that it doesn't output interface files in the package hierarchy. For example, if there are two modules 'basepackage/package1/module1.d' and 'basepackage/package2/module2.d', the interfaces end up as 'headers/module1.di' and 'headers/module2.di'.

Now, when we add the 'headers' directory to the include path, the compiler won't be able to find module1 when importing 'basepackage/package1/module1'. It works when I simply import 'module1', which surprises me since the interface retains the original module declaration.

Anyway, DMD not outputting interfaces in the package hierarchy makes the feature pretty much useless for large projects. Is there a reason for this behavior, or was this simply never considered? I'm willing to try and add a new switch to the compiler so it creates the hierarchy, but I've never touched DMD's source so I'm not sure if I'm the right person for the job.

Reply via email to