A suggestion for modules names / sharing code between projects

Guillaume Piolat via Digitalmars-d digitalmars-d at puremagic.com
Tue Mar 1 16:16:57 PST 2016


On Monday, 29 February 2016 at 19:03:53 UTC, Sebastien Alaiwan 
wrote:
> Hi all,
>
> I've came across the following problem number of times.
> Let's say I have project A and B, sharing code but having a 
> different tree structure.
>
> $ find projectA
> ./projectA/internal/math/algo.d
> ./projectA/internal/math/lcp.d
> ./projectA/internal/math/optimize.d
> ./projectA/gui/main.d
>
> $ find projectB
> ./projectB/app/render/gfx.d
> ./projectB/app/render/algo.d
> ./projectB/app/physics/math/algo.d
> ./projectB/app/physics/math/lcp.d
> ./projectB/app/physics/math/optimize.d
> ./projectB/main.d
>
> The directory "math" is shared between projects. It actually is 
> an external/submodule. So it has a standalone existence as a 
> library, and might one day be used by projectC.
> (In the context of this issue, I'm using separate compilation).
>
> I'd like to be able to write, in projectA's main:
>
> import internal.math.optimize;
>
> This requires me to add, at the beginning of "optimize.d" file, 
> this module definition:
> module internal.math.optimize;
>
> However, this "optimize.d" file is shared between projects, now 
> it's becoming specific to projectA.
>
> How am I supposed to share code between projects then?


Would this work?

1. pick a single module name like

     module math.optimize;

2. import that module with:

     import math.optimize;

3. put this module in a hierarchy like that:

     math/optimize.d

4. pass -I<directory-containing-math-directory> to the compiler

However it may clutter your module namespace a bit more.






More information about the Digitalmars-d mailing list