Import all?
JS
js.mdnq at gmail.com
Thu Jul 18 01:10:13 PDT 2013
On Thursday, 18 July 2013 at 07:43:33 UTC, Jonathan M Davis wrote:
> On Thursday, July 18, 2013 09:25:46 JS wrote:
>> In any case, the real question I have is: Does dmd require each
>> directory for each module to be included by -I? Or is the base
>> directory good enough and package resolution will get at the
>> sub
>> directories?
>
> The base directory of each package hierarchy must be passed to
> dmd with -I.
> So, if you have the module abc.foo.bar, then dmd must have been
> passed the
> directory that abc is in. A module's fully qualified name is
> its directory
> hierarchy, and dmd is always looking for the base of the
> hierarchy, so you
> give it each directory which is the root of a package
> hierarchy. If you have
> abc.foo.bar, and you passed it the abc or abc/foo, it would
> then effectively be
> looking for abc/abc/foo/bar.d or abc/foo/abc/foo/bar.d.
>
> - Jonathan M Davis
using All instead of package as the name worked really well, I
can easily chain imports and each module can import the root to
import the whole library.
e.g.,
lib/All.d
lib/modules*.d
lib/dir?/.../dir?/modules*.d
each module only has to import All to get access to the whole
library. Only the final directories need to import each module.
Each internal directory just has to import the All.d's of each
subdirectory and any modules in the same directory.
Seems to work really well and very simple to update and include
various parts of the library.
e.g.,
/all.d
/a.d
/dir/all.d
/dir/b.d
all.d:
module all;
public import a;
public import dir.b;
/dir/all.d
module dir.all;
public import dir.b;
(I do have my lib partitions for different libraries I have
something like import mylib.all)
essentially all acts like *. e.g., import dir.*; is the same as
import dir.all; (except * would automatically import everything
for you making life easier).
More information about the Digitalmars-d-learn
mailing list