www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Newbie questions: I love them...! Do you?

reply jicman <jicman_member pathlink.com> writes:
Here's one then...:-)

how do I import my own code into a program?  Say I have a bunch of subroutine
that I use for myself to ease my programming life (I'm sure we all have them)...
How do I incorporate them into my programs?  Sorry, but I just figured I should
start to do this.  I used to have one file per program, which was ok, but I am
finding myself into having to change many files after fixing a bug. :-)  I know:
"ROOKIE!"

Ok, so how do I do it?  Also, how do I fix them?  For example, what if some of
those functions use std.string.WhatEver, do I have to import std.string in that
function part?

Please help a poor d programmer wanna be...

thanks,

josé
Mar 10 2005
parent reply clayasaurus <clayasaurus gmail.com> writes:
jicman wrote:
 Here's one then...:-)
 
 how do I import my own code into a program?  Say I have a bunch of subroutine
 that I use for myself to ease my programming life (I'm sure we all have
them)...
 How do I incorporate them into my programs?  Sorry, but I just figured I should
 start to do this.  I used to have one file per program, which was ok, but I am
 finding myself into having to change many files after fixing a bug. :-)  I
know:
 "ROOKIE!"
------------ file1.d ----------------------- module subroutine; // module declaration here import std.string; // import here dance() { rock(); } rock() { std.string.WhatEver(); // or just call WhatEver(); } ------------- main.d ----------------------- import subroutine; // module name int main() { dance(); // or you could use file1.dance() return 0; }
 
 Ok, so how do I do it?  Also, how do I fix them?  For example, what if some of
 those functions use std.string.WhatEver, do I have to import std.string in that
 function part?
no.
 
 Please help a poor d programmer wanna be...
 
k.
 thanks,
 
np.
 josé
 
 
Mar 10 2005
parent reply clayasaurus <clayasaurus gmail.com> writes:
clayasaurus wrote:
 jicman wrote:
 
 Here's one then...:-)

 how do I import my own code into a program?  Say I have a bunch of 
 subroutine
 that I use for myself to ease my programming life (I'm sure we all 
 have them)...
 How do I incorporate them into my programs?  Sorry, but I just figured 
 I should
 start to do this.  I used to have one file per program, which was ok, 
 but I am
 finding myself into having to change many files after fixing a bug. 
 :-)  I know:
 "ROOKIE!"
------------ file1.d -----------------------
should be ------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use file1.dance()
// or you could use subroutine.dance(); just messed up the fnames.
    return 0;
 }
 
 
 Ok, so how do I do it?  Also, how do I fix them?  For example, what if 
 some of
 those functions use std.string.WhatEver, do I have to import 
 std.string in that
 function part?
no.
 Please help a poor d programmer wanna be...
k.
 thanks,
np.
 josé
Mar 10 2005
next sibling parent jicman <jicman_member pathlink.com> writes:
thanks,


clayasaurus says...
clayasaurus wrote:
 jicman wrote:
 
 Here's one then...:-)

 how do I import my own code into a program?  Say I have a bunch of 
 subroutine
 that I use for myself to ease my programming life (I'm sure we all 
 have them)...
 How do I incorporate them into my programs?  Sorry, but I just figured 
 I should
 start to do this.  I used to have one file per program, which was ok, 
 but I am
 finding myself into having to change many files after fixing a bug. 
 :-)  I know:
 "ROOKIE!"
------------ file1.d -----------------------
should be ------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use file1.dance()
// or you could use subroutine.dance(); just messed up the fnames.
    return 0;
 }
 
 
 Ok, so how do I do it?  Also, how do I fix them?  For example, what if 
 some of
 those functions use std.string.WhatEver, do I have to import 
 std.string in that
 function part?
no.
 Please help a poor d programmer wanna be...
k.
 thanks,
np.
 josé
Mar 10 2005
prev sibling parent reply jicman <jicman_member pathlink.com> writes:
clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Mar 11 2005
next sibling parent reply "Unknown W. Brackets" <unknown simplemachines.org> writes:
It's linking them.  Unless I'm mistaken, you'll either need:

dmd month.d jic.d

Or:

dmd -c jic.d
dmd month.d jic.obj

Or similar.  The point is that dmd is automatically calling the linker, 
which needs to be made aware of all the dependencies.

-[Unknown]


 clayasaurus says...
 
------------- subroutine.d -------------------
module subroutine; // module declaration here

import std.string; // import here

dance()
{
   rock();
}

rock()
{
   std.string.WhatEver(); // or just call WhatEver();
}

------------- main.d -----------------------
import subroutine; // module name

int main()
{
   dance(); // or you could use subroutine.dance();
   return 0;
}
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Mar 11 2005
parent jicman <jicman_member pathlink.com> writes:
Thank you.  That was it.

josé

Unknown W. Brackets says...
It's linking them.  Unless I'm mistaken, you'll either need:

dmd month.d jic.d

Or:

dmd -c jic.d
dmd month.d jic.obj

Or similar.  The point is that dmd is automatically calling the linker, 
which needs to be made aware of all the dependencies.

-[Unknown]


 clayasaurus says...
 
------------- subroutine.d -------------------
module subroutine; // module declaration here

import std.string; // import here

dance()
{
   rock();
}

rock()
{
   std.string.WhatEver(); // or just call WhatEver();
}

------------- main.d -----------------------
import subroutine; // module name

int main()
{
   dance(); // or you could use subroutine.dance();
   return 0;
}
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Mar 12 2005
prev sibling parent reply Derek Parnell <derek psych.ward> writes:
On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:

 clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Either run dmd month.d jic.d or build month The reason is that "dmd month.d" will compile 'month.d' and then link 'month.obj'. You also need to compile 'jic'd' and link that in too. My 'build' utility will organize these dependencies for you. -- Derek Parnell Melbourne, Australia http://www.dsource.org/projects/build 12/03/2005 4:31:30 PM
Mar 11 2005
next sibling parent Derek Parnell <derek psych.ward> writes:
On Sat, 12 Mar 2005 16:33:09 +1100, Derek Parnell wrote:

 On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:
 
 clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Either run dmd month.d jic.d or build month The reason is that "dmd month.d" will compile 'month.d' and then link 'month.obj'. You also need to compile 'jic'd' and link that in too. My 'build' utility will organize these dependencies for you.
Ok, now that DMD has a lib pragma, you can also do this ... First create a library that contains jic.obj dmd -c jic lib -c jic jic,obj then add "pragma(lib "jic.lib") to month.d and run dmd month.d To create the month.exe -- Derek Parnell Melbourne, Australia 12/03/2005 4:56:30 PM
Mar 11 2005
prev sibling parent reply jicman <jicman_member pathlink.com> writes:
Derek Parnell says...
On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:

 clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Either run dmd month.d jic.d
Derek, this works... but this
  build month
with your 1.12 build for windows does not. I get, 8:00:20.96>build month c:\dmd\bin\..\..\dm\bin\link.exe month,month.exe,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2
The reason is that "dmd month.d" will compile 'month.d' and then link
'month.obj'. You also need to compile 'jic'd' and link that in too.

My 'build' utility will organize these dependencies for you.
Well, it's not doing it. Also, I think I found a bug on it. But, explain to me why it's not working and I'll tell you the bug. ;-) josé
Mar 12 2005
parent reply Derek Parnell <derek psych.ward> writes:
On Sat, 12 Mar 2005 12:56:22 +0000 (UTC), jicman wrote:

 Derek Parnell says...
On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:

 clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Either run dmd month.d jic.d
Derek, this works... but this
  build month
with your 1.12 build for windows does not. I get, 8:00:20.96>build month c:\dmd\bin\..\..\dm\bin\link.exe month,month.exe,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2
Thanks for the feedback. This is what I tested (before writing my earlier note ) In the folder C:\TEMP I have two files - jic.d and month.d Here is a shot of my screen output ... ----------------------------- C:\TEMP>type jic.d module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } C:\TEMP>type month.d import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } C:\TEMP>build month f:\dmd\bin\..\..\dm\bin\link.exe month+jic,month.exe,,user32+kernel32/noi; C:\TEMP>month CallMe Jan CallMeToo Feb C:\TEMP> ---------------------------- So all I can assume at this point is that we are testing with different source code files.
The reason is that "dmd month.d" will compile 'month.d' and then link
'month.obj'. You also need to compile 'jic'd' and link that in too.

My 'build' utility will organize these dependencies for you.
Well, it's not doing it. Also, I think I found a bug on it. But, explain to me why it's not working and I'll tell you the bug. ;-)
I can't explain why it is not working at your site but is working at mine. Oh, it has a few mistakes remaining. I could tell you a few too actually. I'm planning to post an update tomorrow that corrects three that I know of, so I'd like to know if you have found another of my mistakes. -- Derek Parnell Melbourne, Australia 13/03/2005 12:26:55 AM
Mar 12 2005
parent jicman <jicman_member pathlink.com> writes:
Derek Parnell says...
On Sat, 12 Mar 2005 12:56:22 +0000 (UTC), jicman wrote:

 Derek Parnell says...
On Sat, 12 Mar 2005 01:46:51 +0000 (UTC), jicman wrote:

 clayasaurus says...
------------- subroutine.d -------------------
 module subroutine; // module declaration here
 
 import std.string; // import here
 
 dance()
 {
    rock();
 }
 
 rock()
 {
    std.string.WhatEver(); // or just call WhatEver();
 }
 
 ------------- main.d -----------------------
 import subroutine; // module name
 
 int main()
 {
    dance(); // or you could use subroutine.dance();
    return 0;
 }
So I have this in my directory: 03/11/2005 08:35 PM 236 jic.d 03/11/2005 08:35 PM 145 month.d File jic.d contains: module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } while file month.d contains: import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } when I compile month.d, I get: 20:49:38.41>dmd month.d c:\dmd\bin\..\..\dm\bin\link.exe month,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2 Huh?
Either run dmd month.d jic.d
Derek, this works... but this
  build month
with your 1.12 build for windows does not. I get, 8:00:20.96>build month c:\dmd\bin\..\..\dm\bin\link.exe month,month.exe,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved month.obj(month) Error 42: Symbol Undefined _D3jic6CallMeFAaZAa month.obj(month) Error 42: Symbol Undefined _D3jic9CallMeTooFAaZAa --- errorlevel 2
Thanks for the feedback. This is what I tested (before writing my earlier note ) In the folder C:\TEMP I have two files - jic.d and month.d Here is a shot of my screen output ... ----------------------------- C:\TEMP>type jic.d module jic; private import std.string; char[] CallMe(char[] mon) { char[] mm = "CallMe " ~ mon; return(mm); } char[] CallMeToo(char[] mon) { char[] mm = "CallMeToo " ~ mon; return(mm); } C:\TEMP>type month.d import std.stdio; import jic; void main (char[][] args) { char[] d; writefln(jic.CallMe("Jan")); writefln(jic.CallMeToo("Feb")); } C:\TEMP>build month f:\dmd\bin\..\..\dm\bin\link.exe month+jic,month.exe,,user32+kernel32/noi; C:\TEMP>month CallMe Jan CallMeToo Feb C:\TEMP> ---------------------------- So all I can assume at this point is that we are testing with different source code files.
No, it's the same source code. Do I have to install it? What I did was that I renamed build_win_1.12.exe to build.exe. Then I moved it to c:dmd\bin and typed build 8:50:02.71>build Path and Version : c:\dmd\bin\build.exe v1.12(387) Usage: build sourcefile [options objectfiles libraries] sourcefile D source file -v Verbose (passed through to D) -V Verbose (NOT passed through) -DCPATH<path> <path> is where the compiler has been installed. Only needed if the compiler is not in the system's PATH list. Used if you are testing an alternate version of the compiler. -CFPATH<path> <path> is where the D config file has been installed. -full Causes all source files, except ignored modules, to be compiled. -link Forces the linker to be called instead of the librarian. (Only needed if the source files do not contain main/WinMain) -nolink Ensures that the linker is not called. (Only needed if main/WinMain is found in the source files and you do NOT want an executable created.) -lib Forces the object files to be placed in a library. (Only needed if main/WinMain is found in the source files AND you want it in a library instead of an executable.) -nolib Ensures that the object files are not used to form a library. (Only needed if main/WinMain is not found in the source files and you do NOT want a library. -allobj Ensures that all object files are added to a library. (Normally only those in the same directory are added.) -nounittest Ensures that the compiler does not include any unit tests in the executable.) -cleanup Ensures that all object files created during the run are removed at the end of the run, plus other work files. -gui[:x.y] Forces a GUI application to be created. The optional :x.y can be used to build an application for a specific version of Windows. eg. -gui:4.0 (Only needed if WinMain is not found in the source files or if you wish to override the default Windows version) -test Does everything as normal except it displays the commands instead of running them. -R<y|n> Indicates whether to use a response file or command line arguments with the compiler tools. -Ry will cause a response to be used. -Rn will cause command line arguments to be used. -R will reverse the current usage. ** The default is to use a response file -X<module> Modules to ignore (eg. -Xmylib) -M<module> Modules to notice (eg. -Mphobos) -T~<targetname~> The name of the target file to create. Normally the target name istaken from the first or only name of the command line. -info Displays the version and path of the Build application [...] All other options, objectfiles and libraries are passed to the compiler *Note, you can specify all or any command line value in a response file. Each value appears in its own line in the response file and you reference this file by prefixing its name with an ' ' symbol on the command line. Example: build final where a file called 'final.brf' contains the command line values (including other response file references) If the response file reference is just a single ' ' then build looks for a file called 'build.brf' By the way, great utility, though it's not working for me. :-(. Ok, here is the problem. Say you tried to compile the same month.d with dmd month.d which is not going to work, but it's going to create an executable (which does not work) anyway, and then you type build month.d build replies with, 8:56:36.25>build month.d Files are up to date, no compilation required. Which is not really true, since month.exe gives you an Windows error. What version of link are you running? Here is mine: 9:01:28.78>link OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved OPTLINK : Warning 23: No Stack OPTLINK : Warning 134: No Start Address
I can't explain why it is not working at your site but is working at mine.

Oh, it has a few mistakes remaining. I could tell you a few too actually. 

I'm planning to post an update tomorrow that corrects three that I know of,
so I'd like to know if you have found another of my mistakes.
thanks.
Mar 12 2005