How to use the -I command line switch?

Tony tonytdominguez at aol.com
Wed Jan 3 22:27:34 UTC 2018


On Wednesday, 3 January 2018 at 12:21:28 UTC, tipdbmp wrote:
> // C:\libs\my_module.d
> module my_module;
> void foo() {}
>
> // main.d
> module main;
> import my_module;
>
> void main() {
>     foo();
> }
>
> Running dmd with:
>     dmd -IC:\libs main.d my_module.d
>
> I get:
>     Error: module my_module is in file 'my_module.d' which 
> cannot be read
>     import path[0] = C:\libs
>     import path[1] = 
> path\to\dmd\D\dmd2\windows\bin\..\..\src\phobos
>     import path[2] = 
> path\to\dmd\D\dmd2\windows\bin\..\..\src\druntime\import

As has already been mentioned, the -I is not used for 
command-line files. Just compiling (-c option) shows that the -I 
is enough for DMD to find the import file:

dmd -c main.d -Ic:\libs

successfully compiles main.d into main.obj

To do a full compile and link of main without compiling 
my_module.d each time:

C:\libs>dmd -lib -ofmy_module.lib my_module.d

creates "my_module.lib". Then use it to link with in main.d 
compile/link:

C:\code\d\forum>dmd main.d -Ic:\libs -Llib c:\libs\my_module
OPTLINK (R) for Win32  Release 8.00.17
Copyright (C) Digital Mars 1989-2013  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
OPTLINK : Warning 9: Unknown Option : NOILIB


main.exe is created even though there is a mysterious warning.


More information about the Digitalmars-d-learn mailing list