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.