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 the MSVC++ IDE. Command-line
makefiles created by makmake contain syntax which it is not
possible to incorporate into makefiles intended for the MSVC
IDE — these are discussed in the following topic “Using
makmake”.
Starting with hello.mmp, you can build the makefile
file hello.wins using:
makmake hello wins
You then build the project from the command line by running:
nmake -f hello.wins
For the ARMI environment, you can build the makefile file
hello.armi using:
makmake hello armi
You can then build the project from the command line by running:
nmake -f hello.armi
To build the .dsp and .dsw files,
designed for Microsoft Developer Studio (Visual C++ 6.0), you can do:
makmake hello vc6
Support for creating VC4 and VC5 IDE workspaces is no longer provided, only workspaces for VC6 can be created.
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 - wide (UNICODE), debug mode
urel - wide (UNICODE), 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:
nmake -f hello.armi udeb
If nmake is invoked with no target specified, then
the following default targets will be built:
the default for ARM is wide, release mode
the default for WINS is wide, debug mode.
If you build the executable using the MSVC++ IDE makefile, you may also need to run tools such as the bitmap and application information compilers, to build other aspects of the project. Command line makefiles will invoke these tools for you.
You may use path specifications to locate the .mmp
file in any directory.
For example:
makmake ..\..\epoc32ex\e32\hello
armi
or
makmake ..\..\epoc32ex\e32\hello
vc6
will locate the specified .mmp file. However, the
generated makmake files are always written into the current
directory.
Command-line makefiles created by makmake contain
syntax which it is not possible to incorporate into makefiles intended for the
MSVC IDE.
Command-line makefiles provide extra makefile targets which enable
you to use nmake to create work directories and erase non-source
files for a particular build variant of a project.
For example, WINS command-line makefiles provide the targets makework, makeworkudeb, makeworkurel, clean, cleanudeb, cleanurel.
The following
nmake -f hello.wins clean will attempt to
delete the non-source files created during a build of all variants of the
project hello, while
nmake -f hello.wins cleanudeb for example,
will attempt only to delete non-source files created by a wide debug build of
the project.
The following nmake -f hello.wins 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.