Symbian3/PDK/Source/GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Wed, 16 Jun 2010 10:24:13 +0100
changeset 10 d4524d6a4472
parent 5 f345bda72bc4
permissions -rw-r--r--
removal of PIPS 'antiword' example pending a decision on its license

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496" xml:lang="en"><title>How
to use makmake</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>Symbian projects are defined by an <filepath>.mmp</filepath> file which
specifies the essential elements of the project. The <filepath>makmake</filepath> tool
then uses this environment-neutral file to build makefiles for use in various
environments. These makefiles are then used for project development. </p>
<p>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 <filepath>makmake</filepath> contain
syntax which it is not possible to incorporate into makefiles intended for
an IDE: these are discussed below. </p>
<section><title>Building and running a project for WINSCW</title> <p>Starting
with <filepath>hello.mmp</filepath>, you can build the makefile file <filepath>hello.winscw</filepath> using: </p> <p><userinput>makmake
hello winscw</userinput> </p> <p>You then build the project from the command
line by running: </p> <p><userinput>make -f hello.winscw</userinput> </p> </section>
<section><title>Building debug and release variants</title> <p>A command line
makefile produced by <filepath>makmake</filepath> allows the executable (an
EXE or any type of <filepath>DLL</filepath>) to be produced in one of two
variants: </p> <ul>
<li id="GUID-277C7FEF-E82E-534B-9D4A-E7202C55D902"><p> <filepath>udeb</filepath>:
debug mode </p> </li>
<li id="GUID-3E123400-CB9C-593B-8D10-9717FE0B52D4"><p> <filepath>urel</filepath>:
release mode </p> </li>
</ul> <p>which may be selected by specifying the variant as a target. </p> <p>For
example, to build the <filepath>udeb</filepath> variant of the executable,
you can do: </p> <p><userinput>make -f hello.armi udeb</userinput> </p> <p>If <filepath>make</filepath> /<filepath>nmake</filepath> 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. </p> <p>You may use path specifications to locate the <filepath>.mmp</filepath> file
in any directory. </p> <p>For example: </p> <p><userinput>makmake ..\..epoc32ex\e32\hello
armv5</userinput> </p> <p>or </p> <p><userinput>makmake ..\..epoc32ex\e32\hello
cw_ide</userinput> </p> <p>will locate the specified <filepath>.mmp</filepath> file.
However, the generated <filepath>makmake</filepath> files are always written
into the current directory. </p> </section>
<section><title>Command line makefile utilities</title> <p>Command-line makefiles
provide extra makefile targets which enable you to use <filepath>make</filepath> or <filepath>nmake</filepath> to
create work directories and erase non-source files for a particular build
variant of a project. </p> <p>For example, </p> <ul>
<li id="GUID-E6B4369D-C966-59F4-A44B-E708930DB07F"><p> <systemoutput>make
-f hello.winscw clean</systemoutput> attempts to delete the non-source files
created during a build of all variants of the project <filepath>hello</filepath> </p> </li>
<li id="GUID-C9E915E0-6339-5A74-9BDC-BD62D3B79B67"><p> <systemoutput>make
-f hello.winscw makework</systemoutput> will create the work directories for
a build of all variants of the project hello, while <codeph>nmake        
        -f hello.wins makeworkurel</codeph> will create the work directories
for a wide release build of the project. </p> </li>
</ul> <p>The build-specific <codeph>makework</codeph> 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. </p> </section>
</conbody><related-links>
<link href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita"><linktext>mmp file
syntax</linktext></link>
</related-links></concept>