Simple import question
Adam D. Ruppe via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 9 12:30:09 PDT 2014
On Thursday, 9 October 2014 at 18:21:32 UTC, WhatMeWorry wrote:
> "To import one module from another, specify the name of the
> module in an import declaration. The name must include the
> relative path computed from the directory where compilation
> takes place"
This is not true. It is a REALLY common misconception, but it is
not true. The import name must match the name given in the module
declaration of the file.
So in the file you're importing, add "module your.name;" to the
top. In the main file, import it as "import your.name;". If those
two don't match, it will complain "cannot import module "foo" as
"foo.bar"" or something like that.
It is recommended that the module name match the file name and
folder name, but it is the module declaration at the top that
matters, not the file/folder name.
> Ok, but how does one determine where compilation takes place?
The directory from which you run the compiler. But the best way
is to explicitly pass all the file names to the compiler:
dmd yourfile.d file2.d folder/file3.d and so on...
Doing that will serve you best in the long run, it will work with
any module name and will link better too.
More information about the Digitalmars-d-learn
mailing list