Main Page | Related Pages

# List of Modules

This section lists all available modules and explains their usage as well as their configuration options. The corresponding configuration variables can be set in one of the config files explained in Configuration.

All of these settings can be specified/overridden in your projects ACGMakefiles. This is usefull for the modules doxygen and latex, where the corresponding settings depend more on your project than on your local installation.

## cxx

The module `cxx` is used to compile a directory containing C++ source. It examines all C++ source files and filters out the files containing a `main()` function. All other files are linked together to a library that can later be reused from other directories sharing code with the current one. All the `main()` files are compiled to executables having the same name, but w/o the extension.

The cxx module has become somewhat non-trivial. it heavily depends on the configuration files of the different compilers. Therefore you should just use the configuration file provided for the supported compliers and modify them to meet your needs.

Some variables that you might have to change are:

`CXX_SRC_EXT` | Extension of source files (*.cc)
`CXX_HDR_EXT` | Extension of header files (*.hh)
`CXX_COMP` | The C++ compiler

See the config files for their default settings.

## cxxlib

The modules `cxxlib` is almost the same as module `cxx`. The only difference is that is generates a shared/static library for the whole project. In order to use this feature use module `cxxlib` instead of `cxx` for all directories in your source code tree. This module uses the same settings/variables as the module `cxx`.

For versions 1.1.4 and later you can define the variable `CXXLIB_BUILD_DIR` in the `ACGMakefile` of a specific directory to force the module cxxlib to build a library for the directory subtree starting at this point.

## uic

The module `uic` processes all Qt designer files (`*`.ui) and generates the corresponding header (`*`.hh or CXX_HDR_EXT) and implementation (`*`.cc or CXX_SRC_EXT) files.

This module provides the following configuration variables:

`UIC` | The `uic` command

## moc

This module automatically finds all C++ header files (determined by CXX_HDR_EXT extension) defining Qt widgets that use the Qt signal/slot mechanism and runs the Qt proprocessor `moc` on them. This will generate a file `xzy.moc.cc` from the header `xyz.hh` (or again, the extension defined by CXX_SRC_EXT and CXX_HDR_EXT).

This module provides the following configuration variables:

`MOC` | The `moc` command

## latex

The `latex` module can be used to generate `dvi`, `ps`, and `pdf` output from a set of `tex` documents. The main tex files are automatically detected by grepping the string "\documentclass" in your `*`.tex files (so you can savely split your document to different tex files). Additionally `latex` is run twice in order to take ensure correct references and citations. By setting the `TEX_USE_BIBTEX` variable you can also invoke `bibtex`.

This module provides three new targets you can create:

- `acgmake dvi` generates a `dvi` files for each main tex file.
- `acgmake ps` generates the corresponding postscript files by calling `dvips`.
- `acgmake pdf` converts the postscript files to `pdf` files using `ps2pdf`.

This module provides the following configuration variables:

`TEX_LATEX` | The `latex` command
`TEX_BIBTEX` | The `bibtex` command
`TEX_DVIPS` | The `dvips` command
`TEX_PS2PDF` | The `ps2pdf` command
`TEX_USE_BIBTEX` | If this variable is defined, `bibtex` is used
`TEX_PAPER_TYPE` | Can be used to set the paper size/type and may be one of `letter, legal, ledger, a4, a3`

## doxygen

Doxygen is a very nice tool for generating online or printed documentation for large software projects quite easily. E.g. this document has been generated using doxygen. This module is a wrapper that creates the doxygen config file and runs doxygen on the whole project directory. Most settings are just the correspoding doxygen settings, so refer to the doxygen documentation for a more detailed description.

This module provides the following configuration variables:

`DOXYGEN` | The `doxygen` command
`DOXY_FILE_PATTERNS` | Files to consider (e.g. *.cc)
`DOXY_EXCLUDE_DIRS` | Directories to ignore
`DOXY_EXCLUDE_PATTERNS` | Files/dirs to ignore
`DOXY_EXAMPLE_PATH` | Directories containing examples
`DOXY_EXAMPLE_PATTERNS` | Pattern for these exampeles
`DOXY_GENERATE_HTML` | YES/NO
`DOXY_GENERATE_LATEX` | YES/NO
`DOXY_GENERATE_RTF` | YES/NO
`DOXY_GENERATE_MAN` | YES/NO
`DOXY_SETTINGS` | Further settings that will be appended to the doxyfile