1.4 Code Generation

In addition to the many gcc options controlling code generation, gdc has several options specific to itself.

-H

Generates D interface files for all modules being compiled. The compiler determines the output file based on the name of the input file, removes any directory components and suffix, and applies the .di suffix.

-Hd dir

Same as -H, but writes interface files to directory dir. This option can be used with -Hf file to independently set the output file and directory path.

-Hf file

Same as -H but writes interface files to file. This option can be used with -Hd dir to independently set the output file and directory path.

-M

Output the module dependencies of all source files being compiled in a format suitable for make. The compiler outputs one make rule containing the object file name for that source file, a colon, and the names of all imported files.

-MM

Like -M but does not mention imported modules from the D standard library package directories.

-MF file

When used with -M or -MM, specifies a file to write the dependencies to. When used with the driver options -MD or -MMD, -MF overrides the default dependency output file.

-MG

This option is for compatibility with gcc, and is ignored by the compiler.

-MP

Outputs a phony target for each dependency other than the modules being compiled, causing each to depend on nothing.

-MT target

Change the target of the rule emitted by dependency generation to be exactly the string you specify. If you want multiple targets, you can specify them as a single argument to -MT, or use multiple -MT options.

-MQ target

Same as -MT, but it quotes any characters which are special to make.

-MD

This option is equivalent to -M -MF file. The driver determines file by removing any directory components and suffix from the input file, and then adding a .deps suffix.

-MMD

Like -MD but does not mention imported modules from the D standard library package directories.

-X

Output information describing the contents of all source files being compiled in JSON format to a file. The driver determines file by removing any directory components and suffix from the input file, and then adding a .json suffix.

-Xf file

Same as -X, but writes all JSON contents to the specified file.

-fdoc

Generates Ddoc documentation and writes it to a file. The compiler determines file by removing any directory components and suffix from the input file, and then adding a .html suffix.

-fdoc-dir=dir

Same as -fdoc, but writes documentation to directory dir. This option can be used with -fdoc-file=file to independently set the output file and directory path.

-fdoc-file=file

Same as -fdoc, but writes documentation to file. This option can be used with -fdoc-dir=dir to independently set the output file and directory path.

-fdoc-inc=file

Specify file as a Ddoc macro file to be read. Multiple -fdoc-inc options can be used, and files are read and processed in the same order.

-fdump-c++-spec=file

For D source files, generate corresponding C++ declarations in file.

-fdump-c++-spec-verbose

In conjunction with -fdump-c++-spec= above, add comments for ignored declarations in the generated C++ header.

-fsave-mixins=file

Generates code expanded from D mixin statements and writes the processed sources to file. This is useful to debug errors in compilation and provides source for debuggers to show when requested.