How to use makmake

Symbian projects are defined by an .mmp file which specifies the essential elements of the project. The makmake tool then uses this environment-neutral file to build makefiles for use in various environments. These makefiles are then used for project development.

Some makefiles are built for use in building the project from the command-line, while others are for use with an IDE. Command-line makefiles created by makmake contain syntax which it is not possible to incorporate into makefiles intended for an IDE: these are discussed below.

Building and running a project for WINSCW

Starting with hello.mmp, you can build the makefile file hello.winscw using:

makmake hello winscw

You then build the project from the command line by running:

make -f hello.winscw

Building debug and release variants

A command line makefile produced by makmake allows the executable (an EXE or any type of DLL) to be produced in one of two variants:

  • udeb: debug mode

  • urel: release mode

which may be selected by specifying the variant as a target.

For example, to build the udeb variant of the executable, you can do:

make -f hello.armi udeb

If make /nmake is invoked with no target specified, then the following default targets will be built: the default for ARM is release mode; the default for WINSCW, and WINC is debug mode.

You may use path specifications to locate the .mmp file in any directory.

For example:

makmake ..\..epoc32ex\e32\hello armv5

or

makmake ..\..epoc32ex\e32\hello cw_ide

will locate the specified .mmp file. However, the generated makmake files are always written into the current directory.

Command line makefile utilities

Command-line makefiles provide extra makefile targets which enable you to use make or nmake to create work directories and erase non-source files for a particular build variant of a project.

For example,

  • make -f hello.winscw clean attempts to delete the non-source files created during a build of all variants of the project hello

  • make -f hello.winscw makework will create the work directories for a build of all variants of the project hello, while nmake -f hello.wins makeworkurel will create the work directories for a wide release build of the project.

The build-specific makework targets are listed as dependencies of the main build-specific targets in command-line makefiles, so work directories will automatically be created when a target is built with a command-line makefile if these directories do not already exist.

Related concepts