On 18/12/13 10:41, Leandro Motta Barros wrote:
With these simple examples I sent, rdmd seem to resolve dependecies correctly.
For example, with this last example I sent (which prints the class name):
$ rdmd main.d
mylib.util.Foo
If I create an example analogous to yours, it seems OK. However, I was dealing
with a case where the package is at the 2nd level of the subdirectory hierarchy:
std/random2/package.d
std/random2/generator.d
std/random2/distribution.d
and so on. That might have something to do with it.
$ dmd main.d
main.o: In function `_Dmain':
main.d:(.text._Dmain+0xb): undefined reference to `_D5mylib4util3Foo7__ClassZ'
collect2: error: ld returned 1 exit status
--- errorlevel 1
Well, quite. dmd doesn't resolve dependencies, it expects you to pass it all
the necessary source or object files ...
$ dmd main.d mylib/util.d
$ ./main
mylib.util.Foo
... like this.
In this case, at least, rdmd correctly resolved, compiled and linked
mylib/util.d, which was imported through a package.
I think that there must be a problem with packages that are in the 2nd rather
than 1st level of the subdirectory hierarchy.