Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

rdmd

Synopsis

In a command prompt:
> cat myprog.d
import std.stdio;
void main()
{
    writeln("Hello, world without explicit compilations!");
}
> rdmd myprog
Hello, world without explicit compilations!
Inside a D program:
> cat myprog.d
#!/usr/bin/env rdmd
import std.stdio;
void main()
{
    writeln("Hello, world with automated script running!");
}
> ./myprog.d
Hello, world with automated script running!
Windows: replace cat with type and #!/usr/bin/env rdmd with #!rdmd, the latter assuming that rdmd can be found in your path.

Description

rdmd is a companion to the dmd compiler that simplifies the typical edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like make and other tools, rdmd uses the relative dates of the files involved to minimize the amount of work necessary. Unlike make, rdmd tracks dependencies and freshness without requiring additional information from the user.

rdmd:

Usage

rdmd [dmd and rdmd options] progfile[.d] [program arguments]

In addition to dmd's options, rdmd recognizes the following:

--build-only
just build the executable, don't run it. By default, the executable is placed into the source file directory
--chatty
write dmd commands to stdout before executing them
--compiler=/path/to/compiler
use the specified compiler (e.g. gdmd) instead of dmd
--dry-run
do not compile, just show what commands would be run (implies --chatty)
--eval=code
evaluate code including it in
void main(string[] args) { ... }
(multiple --eval allowed, will be evaluated in turn)
--exclude=package
exclude a package from the build (multiple --exclude allowed)
--include=package
negate --exclude or a standard package (std, etc, core)
--extra-file=file
include an extra source or object in the compilation (multiple --extra-file allowed)
--force
force a rebuild even if apparently not necessary
--help
show a help message and exit
--loop=code
like --eval, but code will be additionally included in a loop
foreach (line; stdin.byLine()) { ... }
--main
add an empty
void main() {}
(useful for running unittests)
--makedepend
print dependencies in makefile format and exit
--man
open web browser on manual page
--shebang
rdmd is in a shebang line (put as first argument). Example:
> cat myprog.d
#!/usr/bin/rdmd --shebang -version=test -O
import std.stdio;
void main()
{
    writeln("Hello, world with automated script running!");
}
--tmpdir
use a different temporary directory

Download

Author

Andrei Alexandrescu