summaryrefslogtreecommitdiff
path: root/docs/html
diff options
context:
space:
mode:
authorAdam Mitz <mitza-oci@users.noreply.github.com>2012-02-27 21:34:24 +0000
committerAdam Mitz <mitza-oci@users.noreply.github.com>2012-02-27 21:34:24 +0000
commit075717ba0cf8d9fe8d644c86cd7fa3a4da8da33d (patch)
tree9a80214d912f99fc5cdc998f5ea752f8b977d4ed /docs/html
parentae0756daab9503e85b59e7549d513dcdf739310d (diff)
downloadMPC-075717ba0cf8d9fe8d644c86cd7fa3a4da8da33d.tar.gz
ChangeLogTag: Mon Feb 27 21:33:06 UTC 2012 Adam Mitz <mitza@ociweb.com>
Diffstat (limited to 'docs/html')
-rw-r--r--docs/html/MakeProjectCreator.css34
-rw-r--r--docs/html/MakeProjectCreator.html14223
2 files changed, 8038 insertions, 6219 deletions
diff --git a/docs/html/MakeProjectCreator.css b/docs/html/MakeProjectCreator.css
index c9a9a84f..df10d52a 100644
--- a/docs/html/MakeProjectCreator.css
+++ b/docs/html/MakeProjectCreator.css
@@ -95,6 +95,40 @@ LI.BodyNoLead {
text-transform: none;
font-family: "Times New Roman";
}
+P.Body {
+ display: block;
+ text-align: left;
+ text-indent: 0.000000pt;
+ margin-top: 5.000000pt;
+ margin-bottom: 0.000000pt;
+ margin-right: 0.000000pt;
+ margin-left: 10.000000pt;
+ font-size: 11.000000pt;
+ font-weight: medium;
+ font-style: Regular;
+ color: #000000;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family: "Times New Roman";
+}
+P.BodyNoLead {
+ display: block;
+ text-align: left;
+ text-indent: 0.000000pt;
+ margin-top: 2.000000pt;
+ margin-bottom: 0.000000pt;
+ margin-right: 0.000000pt;
+ margin-left: 10.000000pt;
+ font-size: 11.000000pt;
+ font-weight: medium;
+ font-style: Regular;
+ color: #000000;
+ text-decoration: none;
+ vertical-align: baseline;
+ text-transform: none;
+ font-family: "Times New Roman";
+}
LI.Bullet1 {
display: block;
text-align: left;
diff --git a/docs/html/MakeProjectCreator.html b/docs/html/MakeProjectCreator.html
index a1329c7b..47921b4b 100644
--- a/docs/html/MakeProjectCreator.html
+++ b/docs/html/MakeProjectCreator.html
@@ -1,4237 +1,6991 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
-<head>
- <meta name="generator" content=
+ <head>
+ <meta name="generator" content=
"HTML Tidy for Linux (vers 1 September 2005), see www.w3.org">
- <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
- <meta http-equiv="Content-Style-Type" content="text/css">
- <meta name="id" content=
+ <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <meta name="id" content=
"$Id$">
- <link rel="STYLESHEET" href="MakeProjectCreator.css" charset="ISO-8859-1"
- type="text/css">
+ <link rel="STYLESHEET" href="MakeProjectCreator.css" charset="ISO-8859-1"
+ type="text/css">
- <title>MPC</title>
-</head>
-
-<body bgcolor="#FFFFFF">
- <div>
- <h2 class="ChapterNum">&nbsp;</h2>
- </div>
-
- <div>
- <h1 class="Head1">The Makefile, Project, and Workspace Creator (MPC)</h1>
+ <title>MPC</title>
+ </head>
+ <body bgcolor="#FFFFFF">
<div>
- <h3 class="Head2">Introduction</h3>
- <hr>
-
- <ul>
- <li class="Body">Maintaining multiple build tool files for a
- multi-platform project can be quite a challenge, especially when the
- project structure and platforms are constantly changing and evolving.
- A project may support Makefiles, Visual C++ project files, Borland
- Makefiles, and many others. Adding files, deleting files, changing
- project options or even changing the name of the target within your
- project will require you to expend time updating each build tool
- file. What you need instead is a single location to store project
- specific information to avoid repetitious, tedious modifications to
- multiple build tool files. This is where Makefile Project Creator
- (MPC) comes into the picture.</li>
-
- <li class="Body">MPC can be used to generate build tool specific
- project files from a generic mpc file. The MPC project file is a
- collection of source files that make up a single build target. MPC
- uses platform specific input along with mpc files and generates build
- tool specific files like makefiles, Visual C++ workspace and project
- files, Visual Studio solution and project files, etc.</li>
-
- <li class="Body">MPC provides many advantages over the build tool
- files it replaces. It provides mechanisms for minimizing maintenance
- of project build files. It does this through support for project
- inheritance and defaults for all aspects of a project, and the syntax
- is simple and easy to use and maintain. These and other features will
- be discussed in detail in the following sections. A complete example
- of the use of MPC is shown in the <a href=
- "MakeProjectCreator.html#ExampleMPCFile" class="XRef">Example MPC
- File</a> section.</li>
- </ul>
+ <h2 class="ChapterNum">&nbsp;</h2>
</div>
<div>
- <h3 class="Head2">Using MPC</h3>
- <hr>
-
- <ul>
- <li class="Body">An MPC project is a set of parameters that describe
- an individual build target (such as a library or executable). These
- parameters include the target name, include paths, source files,
- header files, etc. One or more projects can be defined within a
- single mpc file. An MPC workspace is just an arbitrary collection of
- projects.</li>
-
- <li class="Body">Projects can be generated (without workspaces) by
- using the mpc.pl script. Multiple mpc files can be passed to this
- script. If no mpc files are passed to the script, it will search for
- project-related files (such as source files, header files, etc.) and
- incorporate them into a default project.</li>
-
- <li class="Body"><a name="Figure 1-2"></a>This diagram shows a
- high-level view of project file generation using mpc.pl.</li>
-
- <li style="list-style: none">
- <h6 class="FigTitle">Generating projects with mpc.pl</h6>
-
- <table border="1" summary="Generating projects with mpc.pl">
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
+ <h1 class="Head1">The Makefile, Project, and Workspace Creator (MPC)</h1>
- <div>
- <img src="images/mpc.gif" alt=
- "Generating projects with mpc.pl">
- </div>
- </td>
- </tr>
- </table>
- </li>
+ <div>
+ <h3 class="Head2">Introduction</h3>
+ <hr>
+
+ <p class="Body">
+ Maintaining multiple build tool files for a
+ multi-platform project can be quite a challenge, especially when the
+ project structure and platforms are constantly changing and evolving.
+ A project may support Makefiles, Visual C++ project files, Borland
+ Makefiles, and many others. Adding files, deleting files, changing
+ project options or even changing the name of the target within your
+ project will require you to expend time updating each build tool
+ file. What you need instead is a single location to store project
+ specific information to avoid repetitious, tedious modifications to
+ multiple build tool files. This is where Makefile Project Creator
+ (MPC) comes into the picture.
+ </p>
+
+ <p class="Body">
+ MPC can be used to generate build tool specific
+ project files from a generic mpc file. The MPC project file is a
+ collection of source files that make up a single build target. MPC
+ uses platform specific input along with mpc files and generates build
+ tool specific files like makefiles, Visual C++ workspace and project
+ files, Visual Studio solution and project files, etc.
+ </p>
+
+ <p class="Body">
+ MPC provides many advantages over the build tool
+ files it replaces. It provides mechanisms for minimizing maintenance
+ of project build files. It does this through support for project
+ inheritance and defaults for all aspects of a project, and the syntax
+ is simple and easy to use and maintain. These and other features will
+ be discussed in detail in the following sections. The structure and
+ syntax of the MPC files are descrbed in the
+ <a href="#Writing_MPC_Files">Writing MPC and MWC Files</a> section.
+ In addition, a complete example of the use of MPC is shown in the <a href=
+ "MakeProjectCreator.html#ExampleMPCFile" class="XRef">
+ Example MPC
+ File
+ </a> section.
+ </p>
+ </div>
- <li class="Body">To generate workspaces, you must run <em class=
- "Code">mwc.pl</em>. This script will generate projects from mpc files
- and create a workspace based on those mpc files. If no mwc files are
- passed to the script, it will search in the current directory and its
- subdirectories for all mpc files and incorporate them into a single
- workspace.</li>
+ <div>
+ <h3 class="Head2">Using MPC</h3>
+ <hr>
+
+ <p class="Body">
+ An MPC project is a set of parameters that describe
+ an individual build target (such as a library or executable). These
+ parameters include the target name, include paths, source files,
+ header files, etc. One or more projects can be defined within a
+ single mpc file. An MPC workspace is just an arbitrary collection of
+ projects.
+ </p>
+
+ <p class="Body">
+ Projects can be generated (without workspaces) by
+ using the mpc.pl script. Multiple mpc files can be passed to this
+ script. If no mpc files are passed to the script, it will search for
+ project-related files (such as source files, header files, etc.) and
+ incorporate them into a default project.
+ </p>
+
+ <p class="Body">
+ <a name="Figure_1-2"></a>This diagram shows a
+ high-level view of project file generation using mpc.pl.
+ </p>
+
+ <p class="Body">
+ <h6 class="FigTitle">Generating projects with mpc.pl</h6>
+
+ <table border="1" summary="Generating projects with mpc.pl">
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
- <li class="Body">For make based project types (make, gnuace, bmake,
- nmake), a workspace is just a top-level makefile. But, for graphical
- interfaces such as Visual Studio, a workspace is the top-level file
- that groups all of the project files together.</li>
+ <div>
+ <img src="images/mpc.gif" alt=
+ "Generating projects with mpc.pl">
+ </div>
+ </td>
+ </tr>
+ </table>
+ </p>
- <li class="Body">The following diagram shows a high-level view of
- workspace file generation using mwc.pl.</li>
+ <p class="Body">
+ To generate workspaces, you must run <em class=
+ "Code">mwc.pl</em>. This script will generate projects from mpc files
+ and create a workspace based on those mpc files. If no mwc files are
+ passed to the script, it will search in the current directory and its
+ subdirectories for all mpc files and incorporate them into a single
+ workspace.
+ </p>
+
+ <p class="Body">
+ For make based project types (make, gnuace, bmake,
+ nmake), a workspace is just a top-level makefile. But, for graphical
+ interfaces such as Visual Studio, a workspace is the top-level file
+ that groups all of the project files together.
+ </p>
+
+ <p class="Body">
+ The following diagram shows a high-level view of
+ workspace file generation using mwc.pl.
+ </p>
- <li style="list-style: none">
<h6 class="FigTitle">Generating workspaces with mwc.pl</h6>
- <table border="1" summary="Generating workspaces with mwc.pl">
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
+ <p class="Body">
+ <table border="1" summary="Generating workspaces with mwc.pl">
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
- <div>
- <img src="images/mwc.gif" alt=
+ <div>
+ <img src="images/mwc.gif" alt=
"Generating workspaces with mwc.pl">
- </div>
- </td>
- </tr>
- </table>
- </li>
- </ul>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </p>
- <div>
- <h4 class="Head3">Supported Build Tools</h4>
- <ul>
- <li class="Body">MPC generates workspaces and projects for use with
- many build tools. This table lists the MPC types (used with
- mpc&rsquo;s <em class="Code">-type</em> option) and their
- associated build tools.</li>
- <li style="list-style: none">
+ <div>
+ <h4 class="Head3">Supported Build Tools</h4>
+
+
+ <p class="BodyNoLead">
+ MPC generates workspaces and projects for use with
+ many build tools. This table lists the MPC types (used with
+ mpc&rsquo;s <em class="Code">-type</em> option) and their
+ associated build tools.
+ </p>
+
+
<h6 class="NumberedTableTitle">MPC Types</h6>
- <table border="1" summary="MPC Types">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Type</p>
- </th>
+ <p class="Body">
+ <table border="1" summary="MPC Types">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Type</p>
+ </th>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Build Tool</p>
- </th>
- </tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Build Tool</p>
+ </th>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">automake</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">automake</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">GNU Automake.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">GNU Automake.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">bcb2007</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">bcb2007</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Borland C++ Builder 2007.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Borland C++ Builder 2007.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">bcb2009</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">bcb2009</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">CodeGear C++ Builder 2009.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">CodeGear C++ Builder 2009.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">bds4</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">bds4</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Support for Borland Developer Studio 4
- is incomplete.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Support for Borland Developer Studio 4
+ is incomplete.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">bmake</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">bmake</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Borland Make.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Borland Make.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">cc</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">cc</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Code Composer Studio 2.0</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Code Composer Studio 2.0</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">
- <a href="CDT6.html">cdt6</a></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">
+ <a href="CDT6.html">cdt6</a>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Eclipse CDT 6 (for Eclipse "Galileo" 3.5)
- </p></td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Eclipse CDT 6 (for Eclipse "Galileo" 3.5)
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">
- <a href="CDT6.html"><!--CDT6.html describes cdt7 as well
- -->cdt7</a></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">
+ <a href="CDT6.html">
+ <!--CDT6.html describes cdt7 as well
+ -->cdt7
+ </a>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Eclipse CDT 7 (for Eclipse "Helios" 3.6)
- </p></td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Eclipse CDT 7 (for Eclipse "Helios" 3.6)
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">em3</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">em3</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">eMbedded Visual C++ 3.00 and 4.00.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">eMbedded Visual C++ 3.00 and 4.00.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">ghs</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">ghs</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Green Hills C++ Builder.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Green Hills C++ Builder.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">gnuace</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">gnuace</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">GNU Make for ACE/TAO/CIAO only
- (ACE/TAO/CIAO extension).</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ GNU Make for ACE/TAO/CIAO only
+ (ACE/TAO/CIAO extension).
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">html</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">html</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">html pages are generated for
- visualization of project information.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ html pages are generated for
+ visualization of project information.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">make</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">make</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Generic make. The makefiles generated
- by this project type can be used with any version of make.
- However, due to configuration issues, it should not be used
- with ACE or TAO.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Generic make. The makefiles generated
+ by this project type can be used with any version of make.
+ However, due to configuration issues, it should not be used
+ with ACE or TAO.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">nmake</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">nmake</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Microsoft NMake.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Microsoft NMake.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">
- <a href="RpmSpec.html">rpmspec</a></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">
+ <a href="RpmSpec.html">rpmspec</a>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">RPM packaging .spec files.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">RPM packaging .spec files.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">sle</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">sle</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Support for Visual SlickEdit is
- incomplete.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Support for Visual SlickEdit is
+ incomplete.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc6</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc6</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual C++ 6.0.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual C++ 6.0.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc7</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc7</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual Studio .NET 2002.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual Studio .NET 2002.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc71</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc71</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual Studio .NET 2003.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual Studio .NET 2003.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc8</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc8</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual Studio 2005.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual Studio 2005.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc9</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc9</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual Studio 2008.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual Studio 2008.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode">vc10</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">vc10</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Visual Studio 2010.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Visual Studio 2010.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode"><a href="WB26.html">
- wb26</a></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">
+ <a href="WB26.html">
+ wb26
+ </a>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Wind River Workbench 2.6.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Wind River Workbench 2.6.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="TblCode"><em class="TableCode"><a href="WB30.html">
- wb30</a></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class="TableCode">
+ <a href="WB30.html">
+ wb30
+ </a>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Wind River Workbench 3.0.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Wind River Workbench 3.0.</p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">wix</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">wix</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Wix toolset for .msi creation.</p>
- </td>
- </tr>
- </table>
- </li>
- </ul>
- </div>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Wix toolset for .msi creation.</p>
+ </td>
+ </tr>
+ </table>
+ </p>
- <div>
- <h4 class="Head3">Command Line</h4>
-
- <ul>
- <li class="BodyNoLead">The command line options for the workspace
- creator (<em class="Code">mwc.pl</em>) and the project creator
- (<em class="Code">mpc.pl</em>) are exactly the same. The project
- creator is used to generate one or more separate projects by
- passing mpc files to it on the command line. The workspace creator
- is used to generate one or more workspaces and the projects related
- to those workspaces.</li>
-
- <li class="Body">The table below describes each option with the
- more commonly used options in bold and project specific options in
- italics.</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle"><a name=
- "Command Line Options"></a>Command Line Options</h6>
-
- <table border="1" summary="Command Line Options">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Option</p>
- </th>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
+ </div>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-base</em></p>
- </td>
+ <div>
+ <h4 class="Head3">Command Line</h4>
+
+ <p class="BodyNoLead">
+ The command line options for the workspace
+ creator (<em class="Code">mwc.pl</em>) and the project creator
+ (<em class="Code">mpc.pl</em>) are exactly the same. The project
+ creator is used to generate one or more separate projects by
+ passing mpc files to it on the command line. The workspace creator
+ is used to generate one or more workspaces and the projects related
+ to those workspaces.
+ </p>
+
+ <p class="Body">
+ The table below describes each option with the
+ more commonly used options in bold and project specific options in
+ italics.
+ </p>
+
+ <p class="Body">
+ <h6 class="NumberedTableTitle">
+ <a name=
+ "Command%20Line%20Options"></a>Command Line Options
+ </h6>
+ </p>
+ <p class="Body">
+ <table border="1" summary="Command Line Options">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Option</p>
+ </th>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option allows the user to force
- every project to inherit from a specified base project. This
- option can be used multiple times to force multiple
- inheritance upon a project.</p>
- </td>
- </tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-complete</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-base</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This hidden option can be used to
- generate a tcsh <em class="TableCode">complete</em> command
- that allows a user of the tcsh shell to complete on options
- as well as file names.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option allows the user to force
+ every project to inherit from a specified <a href="#Base_Project">base project</a>. This
+ option can be used multiple times to force multiple
+ inheritance upon a project.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-exclude</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-complete</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this option is used with <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This hidden option can be used to
+ generate a tcsh <em class="TableCode">complete</em> command
+ that allows a user of the tcsh shell to complete on options
+ as well as file names.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-exclude</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this option is used with <em class=
"Code">mwc.pl</em> , the directories or mwc files provided
- in a comma separated list will be excluded when searching
- for mpc files. Each element provided for exclusion should
- be relative to the starting directory. This option has no
- effect when used with <em class="Code">mpc.pl</em>.</p>
- </td>
- </tr>
+ in a comma separated list will be excluded when searching
+ for mpc files. Each element provided for exclusion should
+ be relative to the starting directory. This option has no
+ effect when used with <em class="Code">mpc.pl</em>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-expand_vars</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-expand_vars</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option instructs MPC to perform
- direct replacement of $() variables with the values from
- the environment (if the <em class="Code">-use_env</em>
- option is used) or the values specified by the <em class=
- "Code">-relative</em> option.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option instructs MPC to perform
+ direct replacement of $() variables with the values from
+ the environment (if the <em class="Code">-use_env</em>
+ option is used) or the values specified by the <em class=
+ "Code">-relative</em> option.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-feature_file</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-feature_file</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option allows the user to override
- the default feature file (<em class="Code">MPC/config/</em>
- <em class="Code">default.features</em> or <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option allows the user to override
+ the default feature file (<em class="Code">MPC/config/</em>
+ <em class="Code">default.features</em> or <em class=
"Code">ACE_wrappers/bin/MakeProjectCreator/config/default.features</em>
- ) which may or may not exist. This file can be used to
- override feature values specified in the <em class=
+ ) which may or may not exist. This file can be used to
+ override feature values specified in the <em class=
"Code">global.features</em> file located in the <em class=
"Code">config</em> directory. Feature files are described
- in the <a href="MakeProjectCreator.html#TheFeatureFile"
- class="XRef">Feature File</a> section.</p>
- </td>
- </tr>
+ in the <a href="MakeProjectCreator.html#TheFeatureFile"
+ class="XRef">Feature File</a> section.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-features</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-features</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies the feature list to set
- before processing. This is a comma separated list and
- should contain no spaces. The -features option can be
- used multiple times on the same command line, the
- effect is the same as if the parameters had been
- specified with a single -features options, with the
- parameters joined by commas.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies the feature list to set
+ before processing. This is a comma separated list and
+ should contain no spaces. The -features option can be
+ used multiple times on the same command line, the
+ effect is the same as if the parameters had been
+ specified with a single -features options, with the
+ parameters joined by commas.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-for_eclipse</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-for_eclipse</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Allows generated makefiles to be used
- with Eclipse.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Allows generated makefiles to be used
+ with Eclipse.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-gendot</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-gendot</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">A .dot file, for use with Graphviz,
- will be created for each workspace processed.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A .dot file, for use with Graphviz,
+ will be created for each workspace processed.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-genins</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-genins</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option instructs MPC to generate
- an &ldquo;install&rdquo; file after processing each
- project. These &ldquo;install&rdquo; files can be used with
- the prj_install.pl script which will copy portions of the
- project related files into a user specified location.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option instructs MPC to generate
+ an &ldquo;install&rdquo; file after processing each
+ project. These &ldquo;install&rdquo; files can be used with
+ the prj_install.pl script which will copy portions of the
+ project related files into a user specified location.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-gfeature_file</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-gfeature_file</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies the global feature file. The
- default global feature file is <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies the global feature file. The
+ default global feature file is <em class=
"Code">global.features</em> found in the <em class=
- "Code">config</em> directory.</p>
- </td>
- </tr>
+ "Code">config</em> directory.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-global</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-global</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option specifies the global input
- file. Values stored within this base project are applied to
- all generated projects. The default value is <em class=
- "Code">ACE_wrappers/bin/MakeProjectCreator/global.mpb or
- MPC/config/global.mpb</em>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option specifies the global input
+ file. Values stored within this <a href="#Base_Project">base project</a> are applied to
+ all generated projects. The default value is <em class=
+ "Code">
+ ACE_wrappers/bin/MakeProjectCreator/global.mpb or
+ MPC/config/global.mpb
+ </em>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-hierarchy</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-hierarchy</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this option is used with <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this option is used with <em class=
"Code">mwc.pl</em> , it will generate a workspace at each
- directory between the directory in which it is run and the
- location of a processed mpc file. This option has no effect
- when used with <em class="Code">mpc.pl</em> and is the
- default for &ldquo;make&rdquo; based workspace types.</p>
- </td>
- </tr>
+ directory between the directory in which it is run and the
+ location of a processed mpc file. This option has no effect
+ when used with <em class="Code">mpc.pl</em> and is the
+ default for &ldquo;make&rdquo; based workspace types.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">-include</em></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">-include</em>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Include search directories are added
- with this option. These search directories are used when
- locating base projects, template input files and templates.
- It can be used multiple times on the same command line.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Include search directories are added
+ with this option. These search directories are used when
+ locating base projects, template input files and templates.
+ It can be used multiple times on the same command line.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-into</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-into</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option specifies that all
- generated project files will be placed in a mirrored
- directory structure. If any project within the
- workspace is referenced via a full path, use of this
- option is likely to cause problems.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option specifies that all
+ generated project files will be placed in a mirrored
+ directory structure. If any project within the
+ workspace is referenced via a full path, use of this
+ option is likely to cause problems.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-language</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-language</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option is used to specify which
- language to assume when generating projects. The default
- language is <em class="Code">cplusplus</em>, but <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option is used to specify which
+ language to assume when generating projects. The default
+ language is <em class="Code">cplusplus</em>, but <em class=
"Code">csharp</em>, <em class="Code">java</em> and
- <em class="Code">vb</em> are also supported.</p>
- </td>
- </tr>
+ <em class="Code">vb</em> are also supported.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-make_coexistence</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-make_coexistence</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Make based project types that normally
- name the workspace <em class="Code">Makefile</em>
- (<em class="Code">bmake</em> or <em class="Code">nmake</em>
- ) will name the generated output files such that they can
- coexist within the same directory. In essence, the
- <em class="Code">bmake</em> and <em class="Code">nmake</em>
- workspace names will not be <em class="Code">Makefile</em>,
- but the name of the workspace followed by the project type
- (<em class="Code">.bmake</em> or <em class=
- "Code">.nmake</em> ).</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Make based project types that normally
+ name the workspace <em class="Code">Makefile</em>
+ (<em class="Code">bmake</em> or <em class="Code">nmake</em>
+ ) will name the generated output files such that they can
+ coexist within the same directory. In essence, the
+ <em class="Code">bmake</em> and <em class="Code">nmake</em>
+ workspace names will not be <em class="Code">Makefile</em>,
+ but the name of the workspace followed by the project type
+ (<em class="Code">.bmake</em> or <em class=
+ "Code">.nmake</em> ).
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-name_modifier</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-name_modifier</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option allows the user to modify
- the output names of projects and workspaces. These are
- usually determined by either the mpc or mwc file, but can
- be modified using a pattern replacement. The parameter
- passed to this option will be used as the pattern and any
- asterisks (*) found in the pattern will be replaced with
- the project or workspace name depending on which type of
- file is being created.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option allows the user to modify
+ the output names of projects and workspaces. These are
+ usually determined by either the mpc or mwc file, but can
+ be modified using a pattern replacement. The parameter
+ passed to this option will be used as the pattern and any
+ asterisks (*) found in the pattern will be replaced with
+ the project or workspace name depending on which type of
+ file is being created.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-apply_project</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-apply_project</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option is only useful with the
- <em class="Code">-name_modifier</em> option. When used in
- conjunction with <em class="Code">-name_modifier</em>, the
- pattern will be applied to the project name in addition to
- the project or workspace name.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option is only useful with the
+ <em class="Code">-name_modifier</em> option. When used in
+ conjunction with <em class="Code">-name_modifier</em>, the
+ pattern will be applied to the project name in addition to
+ the project or workspace name.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-nocomments</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-nocomments</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Comments will not be placed in the
- generated workspace files.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Comments will not be placed in the
+ generated workspace files.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-noreldefs</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-noreldefs</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option specifies that the default
- relative definitions should not be generated. See the
- <em class="TableCode">-relative</em> option below.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option specifies that the default
+ relative definitions should not be generated. See the
+ <em class="TableCode">-relative</em> option below.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-notoplevel</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-notoplevel</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option tells <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option tells <em class=
"TableCode">mwc.pl</em> to generate all workspace related
- project files, but do not generate the associated
- workspace. This option tells <em class=
+ project files, but do not generate the associated
+ workspace. This option tells <em class=
"TableCode">mpc.pl</em> to process all mpc files passed in,
- but it will not generate any project files.</p>
- </td>
- </tr>
+ but it will not generate any project files.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-recurse</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-recurse</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Search from the current directory for
- any input files and process them from the directory in
- which they are located.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Search from the current directory for
+ any input files and process them from the directory in
+ which they are located.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">-relative</em></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">-relative</em>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Relative paths are used to replace
- variables enclosed with <em class="TableCode">$()</em>. By
- default, any environment variable that ends in <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Relative paths are used to replace
+ variables enclosed with <em class="TableCode">$()</em>. By
+ default, any environment variable that ends in <em class=
"TableCode">_ROOT</em> will be automatically used as a
- relative path replacement. For more information see
- <a href="MakeProjectCreator.html#Additional%20-relative%20information"
- class="XRef">the -relative Option</a>.</p>
- </td>
- </tr>
+ relative path replacement. For more information see
+ <a href="MakeProjectCreator.html#Additional-relative_information"
+ class="XRef">the -relative Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-relative_file</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-relative_file</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option allows you to override the
- default relative definitions file, which is default.rel
- under the MPC config directory.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option allows you to override the
+ default relative definitions file, which is default.rel
+ under the MPC config directory.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-static</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-static</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies that static project files
- will be generated from the MPC projects. The default is to
- generate dynamic project files.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies that static project files
+ will be generated from the MPC projects. The default is to
+ generate dynamic project files.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-template</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-template</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option allows a user to specify an
- alternate template. Each project type has its own template
- and this option allows a user to override the default
- template.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option allows a user to specify an
+ alternate template. Each project type has its own template
+ and this option allows a user to override the default
+ template.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-ti</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-ti</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Each project type has a set of template
- input files. With this option the default template input
- file can be overridden for a particular project type. For
- more information see <a href=
- "MakeProjectCreator.html#Additional%20-ti%20information"
- class="XRef">the -ti Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Each project type has a set of template
+ input files. With this option the default template input
+ file can be overridden for a particular project type. For
+ more information see <a href=
+ "MakeProjectCreator.html#Additional-ti_information"
+ class="XRef">the -ti Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">-type</em></em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">-type</em>
+ </em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option specifies the type of
- project or workspace to be generated. It can be specified
- multiple times to generate different project types for a
- single set of input files.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option specifies the type of
+ project or workspace to be generated. It can be specified
+ multiple times to generate different project types for a
+ single set of input files.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-use_env</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-use_env</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option instructs MPC to replace
- all <em class="TableCode">$()</em> instances with the
- corresponding environment variable value instead of using
- values provided by the -relative option.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option instructs MPC to replace
+ all <em class="TableCode">$()</em> instances with the
+ corresponding environment variable value instead of using
+ values provided by the -relative option.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-value_project</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-value_project</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Use this option to override an mpc
- project assignment from the command line. This can be used
- to introduce new name value pairs to a project. However, it
- must be a valid project assignment. For more information
- see <a href=
- "MakeProjectCreator.html#Additional%20-value_project%20information"
- class="XRef">the -value_project Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Use this option to override an mpc
+ project assignment from the command line. This can be used
+ to introduce new name value pairs to a project. However, it
+ must be a valid project assignment. For more information
+ see <a href=
+ "MakeProjectCreator.html#Additional-value_project_information"
+ class="XRef">the -value_project Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">-value_template</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">-value_template</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This option can be used to override
- existing template input variable values from the command
- line. It can not be used to introduce new template input
- name value pairs. For more information see <a href=
- "MakeProjectCreator.html#Additional%20-value_template%20information"
- class="XRef">the -value_template Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This option can be used to override
+ existing template input variable values from the command
+ line. It can not be used to introduce new template input
+ name value pairs. For more information see <a href=
+ "MakeProjectCreator.html#Additional-value_template_information"
+ class="XRef">the -value_template Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-workers</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-workers</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies number of child processes to
- use to generate projects. For more information see <a href=
- "MakeProjectCreator.html#Additional%20-workers%20information"
- class="XRef">the -workers Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies number of child processes to
+ use to generate projects. For more information see <a href=
+ "MakeProjectCreator.html#Additional-workers_information"
+ class="XRef">the -workers Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-workers_dir</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-workers_dir</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The directory for storing temporary
- output files from the child processes. The default is
- '/tmp/mpc' on Unix systems and %TEMP% on Windows. If
- neither -workers_dir nor -workers_port is used,
- -workers_dir is assumed. For more information see <a href=
- "MakeProjectCreator.html#Additional%20-workers_dir%20information"
- class="XRef">the -workers_dir Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The directory for storing temporary
+ output files from the child processes. The default is
+ '/tmp/mpc' on Unix systems and %TEMP% on Windows. If
+ neither -workers_dir nor -workers_port is used,
+ -workers_dir is assumed. For more information see <a href=
+ "MakeProjectCreator.html#Additional-workers_dir_information"
+ class="XRef">the -workers_dir Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-workers_port</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-workers_port</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The port number for the parent listener.
- If neither -workers_dir nor -workers_port is used,
- -workers_dir is assumed. For more information see <a href=
- "MakeProjectCreator.html#Additional%20-workers_port%20information"
- class="XRef">the -workers_port Option</a>.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The port number for the parent listener.
+ If neither -workers_dir nor -workers_port is used,
+ -workers_dir is assumed. For more information see <a href=
+ "MakeProjectCreator.html#Additional-workers_port_information"
+ class="XRef">the -workers_port Option</a>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">-version</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">-version</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The MPC version is printed and no files
- are processed.</p>
- </td>
- </tr>
- </table>
- </li>
- </ul>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The MPC version is printed and no files
+ are processed.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+
+
+ <div>
+ <h5 class="Head4">Additional Option Descriptions</h5>
- <div>
- <h5 class="Head4">Additional Option Descriptions</h5>
- <ul>
- <li class="BodyNoLead">Some of the options in <a href=
+ <p class="BodyNoLead">
+ Some of the options in <a href=
"MakeProjectCreator.html#Command%20Line%20Options" class=
"XRef">Command Line Options</a> require an expanded explanation.
- You will find more information on the <em class=
+ You will find more information on the <em class=
"Code">-relative</em>, <em class="Code">-ti</em>, <em class=
"Code">-value_project</em>, <em class=
"Code">-value_template</em>, <em class=
"Code">-workers</em>, <em class=
"Code">-workers_dir</em> and <em class=
- "Code">-workers_port</em> options below.</li>
- </ul>
+ "Code">-workers_port</em> options below.
+ </p>
- <div>
- <h6 class="Head5"><a name=
- "Additional -relative information"></a>The -relative Option.</h6>
-
- <ul>
- <li class="BodyNoLead">Some project types do not (completely)
- support the idea of accessing environment variables through the
- use of <em class="Code">$()</em>, and therefore MPC must ensure
- that generated projects are usable in these cases. In order to
- avoid the existence of <em class="Code">$()</em> variables
- within the generated project files, relative paths are put in
- place of those (where possible).</li>
-
- <li class="Body">The <em class="Code">-relative</em> option
- takes a single parameter of a name value pair, for
- example:</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
- <p class="Code">mwc.pl -relative
- PROJ_TOP=/usr/projects/top</p>
+ <div>
+ <h6 class="Head5">
+ <a name=
+ "Additional-relative_information"></a>The -relative Option.
+ </h6>
- <p class="Code">&nbsp;</p>
- </li>
- <li class="Body">In above example, if the text <em class=
+ <p class="BodyNoLead">
+ Some project types do not (completely)
+ support the idea of accessing environment variables through the
+ use of <em class="Code">$()</em>, and therefore MPC must ensure
+ that generated projects are usable in these cases. In order to
+ avoid the existence of <em class="Code">$()</em> variables
+ within the generated project files, relative paths are put in
+ place of those (where possible).
+ </p>
+
+ <p class="Body">
+ The <em class="Code">-relative</em> option
+ takes a single parameter of a name value pair, for
+ example:
+ </p>
+
+ <blockquote>
+
+
+ <p class="Code">
+ mwc.pl -relative
+ PROJ_TOP=/usr/projects/top
+ </p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ In above example, if the text <em class=
"Code">"$(PROJ_TOP)</em> " is found as a value for any mpb,
- mpc, mpd, or mpt variable then it is replaced by a path that is
- relative to <em class="Code">/usr/projects/top</em>. For
- example, if an mpc file located under <em class=
- "Code">/usr/projects/top/dir</em> contained the following:</li>
+ mpc, mpd, or mpt variable then it is replaced by a path that is
+ relative to <em class="Code">/usr/projects/top</em>. For
+ example, if an mpc file located under <em class=
+ "Code">/usr/projects/top/dir</em> contained the following:
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">project {</p>
- <p class="Code">&nbsp;&nbsp;includes += $(PROJ_TOP)</p>
- <p class="Code">}</p>
+ <p class="Code">project {</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;includes += $(PROJ_TOP)</p>
- <li class="Body">The generated project file would contain text
- similar to:</li>
+ <p class="Code">}</p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
- <p class="Code">CPPFLAGS += -I..</p>
+ </blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Body">
+ The generated project file would contain text
+ similar to:
+ </p>
- <li class="Body">The <em class="Code">$(PROJ_TOP)</em> string
- was replaced with a directory value that is relative to the
- directory in which the mpc file is located.</li>
- </ul>
- </div>
+ <blockquote>
+ <p class="Code">CPPFLAGS += -I..</p>
+ </blockquote>
- <div>
- <a name="Additional -ti information"></a>
-
- <h6 class="Head5">The -ti Option.</h6>
-
- <ul>
- <li class="BodyNoLead">The <em class="Code">-ti</em> option
- allows you to identify different template input files based on
- the type of target being built. Template input files correspond
- to four different categories: <em class="Code">dll</em>,
- <em class="Code">lib</em>, <em class="Code">dll_exe</em>, and
- <em class="Code">lib_exe</em>. Not all project types
- distinguish between the different categories, but the templates
- for various project types will be combined with different
- template input files, depending on the build target type, to
- generate different output.</li>
-
- <li class="Body">To override the default template input file
- names, a <em class="Code">-ti</em> option is provided. The
- <em class="Code">-ti</em> option takes a single parameter of
- the form <em class="Code">type:file</em>. The <em class=
- "Code">type</em> is one of the four categories stated above and
- the <em class="Code">file</em> is the base name of an mpt file
- located somewhere in the include search paths.</li>
+ <p class="Body">
+ The <em class="Code">$(PROJ_TOP)</em> string
+ was replaced with a directory value that is relative to the
+ directory in which the mpc file is located.</li>
- <li class="Body">The following example shows a usage of the -ti
- option. It says that when generating a static project (lib),
- use the <em class="Code">vc7lib</em> template input file and
- when generating a dynamic project (dll), use the <em class=
- "Code">vc7dll</em> template input file:</li>
+ </div>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <div>
+ <a name="Additional-ti_information"></a>
+
+ <h6 class="Head5">The -ti Option.</h6>
+
+
+ <p class="BodyNoLead">
+ The <em class="Code">-ti</em> option
+ allows you to identify different template input files based on
+ the type of target being built. Template input files correspond
+ to four different categories: <em class="Code">dll</em>,
+ <em class="Code">lib</em>, <em class="Code">dll_exe</em>, and
+ <em class="Code">lib_exe</em>. Not all project types
+ distinguish between the different categories, but the templates
+ for various project types will be combined with different
+ template input files, depending on the build target type, to
+ generate different output.
+ </p>
+
+ <p class="Body">
+ To override the default template input file
+ names, a <em class="Code">-ti</em> option is provided. The
+ <em class="Code">-ti</em> option takes a single parameter of
+ the form <em class="Code">type:file</em>. The <em class=
+ "Code">type</em> is one of the four categories stated above and
+ the <em class="Code">file</em> is the base name of an mpt file
+ located somewhere in the include search paths.
+ </p>
+
+ <p class="Body">
+ The following example shows a usage of the -ti
+ option. It says that when generating a static project (lib),
+ use the <em class="Code">vc7lib</em> template input file and
+ when generating a dynamic project (dll), use the <em class=
+ "Code">vc7dll</em> template input file:
+ </p>
+
+ <blockquote>
+ <p class="Code">
+ mpc.pl -type vc71 -ti lib:vc7dsplib -ti
+ dll:vc7dspdll
+ </p>
- <p class="Code">mpc.pl -type vc71 -ti lib:vc7dsplib -ti
- dll:vc7dspdll</p>
+ </blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Body">
+ These happen to be the default values for the
+ <em class="Code">vc71</em> type, but it illustrates that a
+ different template input can be specified for each
+ category.
+ </p>
- <li class="Body">These happen to be the default values for the
- <em class="Code">vc71</em> type, but it illustrates that a
- different template input can be specified for each
- category.</li>
- </ul>
- </div>
+ </div>
- <div>
- <a name="Additional -value_project information"></a>
+ <div>
+ <a name="Additional-value_project_information"></a>
- <h6 class="Head5">The -value_project Option.</h6>
+ <h6 class="Head5">The -value_project Option.</h6>
- <ul>
- <li class="BodyNoLead">The <em class="Code">-value_project</em>
- option can be useful when the need arises to modify the value
- of an MPC variable across one or more mpc files. For example,
- if you wanted to generate all of your projects with an
- additional include search path you would run the following
- command:</li>
+ <p class="BodyNoLead">
+ The <em class="Code">-value_project</em>
+ option can be useful when the need arises to modify the value
+ of an MPC variable across one or more mpc files. For example,
+ if you wanted to generate all of your projects with an
+ additional include search path you would run the following
+ command:
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">mwc.pl -value_project
- includes+=/include/path</p>
+ <p class="Code">
+ mwc.pl -value_project
+ includes+=/include/path
+ </p>
- <p class="Code">&nbsp;</p>
- </li>
+ </blockquote>
- <li class="Body">In the above example, an additional include
- search path of <em class="Code">/include/path</em> would be
- placed in all generated projects.</li>
- </ul>
- </div>
+ <p class="Body">
+ In the above example, an additional include
+ search path of <em class="Code">/include/path</em> would be
+ placed in all generated projects.
+ </p>
- <div>
- <a name="Additional -value_template information"></a>
+ </div>
- <h6 class="Head5">The -value_template Option.</h6>
+ <div>
+ <a name="Additional-value_template_information"></a>
- <ul>
- <li class="BodyNoLead">This option modifies existing or adds
- new template input name/value pairs. For example, if you wanted
- to generate dynamic <em class="Code">vc71</em> projects with
- only <em class="Code">Release</em> targets, you would run the
- following command:</li>
+ <h6 class="Head5">The -value_template Option.</h6>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="BodyNoLead">
+ This option modifies existing or adds
+ new template input name/value pairs. For example, if you wanted
+ to generate dynamic <em class="Code">vc71</em> projects with
+ only <em class="Code">Release</em> targets, you would run the
+ following command:
+ </p>
- <p class="Code">mwc.pl -type vc71 -value_template
- configurations=Release</p>
+ <blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">
+ mwc.pl -type vc71 -value_template
+ configurations=Release
+ </p>
+
+ </blockquote>
- <li class="Body">To find out what template input variables are
- defined, see the individual mpd file of interest (<em class=
+ <p class="Body">
+ To find out what template input variables are
+ defined, see the individual mpd file of interest (<em class=
"Code">$ACE_ROOT/bin/MakeProjectCreator/templates/*.mpd</em>
- and <em class="Code">$MPC_ROOT/templates/*.mpd</em> ) and
- search for names used within <em class="Code">&lt;%</em> and
- <em class="Code">%&gt;</em> or use the <em class=
+ and <em class="Code">$MPC_ROOT/templates/*.mpd</em> ) and
+ search for names used within <em class="Code">&lt;%</em> and
+ <em class="Code">%&gt;</em> or use the <em class=
"Code">document_template.pl</em> script described in the
- <a href="#Document%20Template%20Script">Template Variable
- Documentation</a> section. Names that are not listed as project
- keywords (see <a href="MakeProjectCreator.html#82186" class=
- "XRef">Assignment Keywords</a>) are template variables.</li>
- </ul>
- </div>
+ <a href="#Document_Template_Script">
+ Template Variable
+ Documentation
+ </a> section. Names that are not listed as project
+ keywords (see <a href="MakeProjectCreator.html#82186" class=
+ "XRef">Assignment Keywords</a>) are template variables.
+ </p>
- <div>
- <a name="Additional -workers information"></a>
+ </div>
- <h6 class="Head5">The -workers Option.</h6>
+ <div>
+ <a name="Additional-workers_information"></a>
- <ul>
- <li class="BodyNoLead">This option specifies the number of
- child process to use to generate projects. Using multiple
- workers can decrease project generation time significantly
- on multiprocessor systems. For example, if you wanted to
- distribute projects among four worker processes, you
- would run the following command:</li>
+ <h6 class="Head5">The -workers Option.</h6>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="BodyNoLead">
+ This option specifies the number of
+ child process to use to generate projects. Using multiple
+ workers can decrease project generation time significantly
+ on multiprocessor systems. For example, if you wanted to
+ distribute projects among four worker processes, you
+ would run the following command:
+ </p>
- <p class="Code">mwc.pl -type gnuace -workers 4</p>
+ <blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">mwc.pl -type gnuace -workers 4</p>
- <li class="Body">In multi-process MPC, each child has
- to pass intermediate project info back to the parent. This
- is done using temporary files or using a socket. The temp
- file implementation, <a href=
-"MakeProjectCreator.html#Additional%20-workers_dir%20information"
-class="XRef">the -workers_dir option</a>,
- forks a new child for each project and ensures there are
- never more children running than requested. The socket
- listener implementation, <a href=
-"MakeProjectCreator.html#Additional%20-workers_port%20information"
-class="XRef">the -workers_port option</a>,
- pre-forks N children and distributes jobs to them.</li>
- </ul>
- </div>
+ </blockquote>
- <div>
- <a name="Additional -workers_dir information"></a>
+ <p class="Body">
+ In multi-process MPC, each child has
+ to pass intermediate project info back to the parent. This
+ is done using temporary files or using a socket. The temp
+ file implementation, <a href=
+"MakeProjectCreator.html#Additional-workers_dir_information"
+class="XRef">the -workers_dir option</a>,
+ forks a new child for each project and ensures there are
+ never more children running than requested. The socket
+ listener implementation, <a href=
+"MakeProjectCreator.html#Additional-workers_port_information"
+class="XRef">the -workers_port option</a>,
+ pre-forks N children and distributes jobs to them.
+ </p>
- <h6 class="Head5">The -workers_dir Option.</h6>
+ </div>
- <ul>
- <li class="BodyNoLead">This option specifies the directory for
- storing temporary output files from the child processes.
- The default is '/tmp/mpc' on Unix-like systems and %TEMP%
- on Windows. If neither <em class="Code">-workers_dir</em>
- nor <em class="Code">-workers_port</em> is
- used, <em class="Code">-workers_dir</em> is assumed. For
- example, if you wanted to use 4 workers and '/tmp/mydir' for
- temporary filess, you would run the following command:</li>
+ <div>
+ <a name="Additional-workers_dir_information"></a>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <h6 class="Head5">The -workers_dir Option.</h6>
- <p class="Code">mwc.pl -type gnuace -workers 4 -workers_dir /tmp/mydir</p>
- <p class="Code">&nbsp;</p>
- </li>
- </ul>
+ <p class="Body">
+ This option specifies the directory for
+ storing temporary output files from the child processes.
+ The default is '/tmp/mpc' on Unix-like systems and %TEMP%
+ on Windows. If neither <em class="Code">-workers_dir</em>
+ nor <em class="Code">-workers_port</em> is
+ used, <em class="Code">-workers_dir</em> is assumed. For
+ example, if you wanted to use 4 workers and '/tmp/mydir' for
+ temporary filess, you would run the following command:
+ </p>
+
+ <blockquote>
+
+
+ <p class="Code">mwc.pl -type gnuace -workers 4 -workers_dir /tmp/mydir</p>
+
+
+ </blockquote>
+
+ </div>
+
+ <div>
+ <a name="Additional-workers_port_information"></a>
+
+ <h6 class="Head5">The -workers_port Option.</h6>
+
+
+ <p class="BodyNoLead">
+ This option specifies the port number
+ where the parent listens for project information from the
+ children. If you wanted to receive information from 2 workers
+ on port 9876, you would run the following command:
+ </p>
+
+ <blockquote>
+
+
+ <p class="Code">mwc.pl -type gnuace -workers 2 -workers_port 9876</p>
+
+ </blockquote>
+
+
+ </div>
+ </div>
</div>
<div>
- <a name="Additional -workers_port information"></a>
+ <h4 class="Head3">Configuration Files</h4>
- <h6 class="Head5">The -workers_port Option.</h6>
- <ul>
- <li class="BodyNoLead">This option specifies the port number
- where the parent listens for project information from the
- children. If you wanted to receive information from 2 workers
- on port 9876, you would run the following command:</li>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <h6 class="Head5">Codebase Configuration File (base.cfg)</h6>
- <p class="Code">mwc.pl -type gnuace -workers 2 -workers_port 9876</p>
- <p class="Code">&nbsp;</p>
- </li>
- </ul>
- </div>
- </div>
- </div>
+ <p class="BodyNoLead">
+ This configuration file can be used to
+ specify alternate locations for the MPC Configuration File
+ (discussed below). If a <em class="Code">base.cfg</em> is found
+ underneath the <em class="Code">config</em> directory in the MPC
+ root directory, it will be read to determine the location of
+ MPC.cfg based on the directory in which MPC was started.
+ </p>
- <div>
- <h4 class="Head3">Configuration Files</h4>
- <ul>
- <li class="BodyNoLead">
- <h6 class="Head5">Codebase Configuration File</h6>
- </li>
+ <p class="Body">
+ The <em class="Code">base.cfg</em> file allows you to specify which MPC.cfg
+ file to use with the syntax: &lt;execution_path_root&gt = &lt;mpc_config_path&gt;.
+ &nbsp;For a base.cfg file containing the following:
+ </p>
+
+ <blockquote>
+
+ <p class="Code">/foo/bar_root = /foo/bar_root/MPC/config</p>
- <li class="BodyNoLead">This configuration file can be used to
- specify alternate locations for the MPC Configuration File
- (discussed below). If a <em class="Code">base.cfg</em> is found
- underneath the <em class="Code">config</em> directory in the MPC
- root directory, it will be read to determine the location of
- MPC.cfg based on the directory in which MPC was started.</li>
+ </blockquote>
- <li class="Body">For example, if <em class=
+ <p class ="Body">
+ Meaning that when $MPC_ROOT/mwc.pl is run in a directory below <em class="Code">/foo/bar_root</em>, it will
+ search for <em class="Code">MPC.cfg</em> in the directory <em class="Code">/foo/bar_root/MPC/config</em>.
+ </p>
+ <p class="Body">
+ For example, if <em class=
"Code">$MPC_ROOT/mwc.pl</em> is run under <em class=
- "Code">/foo/bar_root/src</em> and <em class=
- "Code">$MPC_ROOT/config/base.cfg</em> contained:</li>
-
- <li class="Body">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">/foo/bar_root = /foo/bar_root/MPC/config</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">MPC would attempt to open and read <em class=
- "Code">/foo/bar_root/MPC/config/MPC.cfg</em> as the MPC
- Configuration File. If the base configuration file is not present,
- MPC will try to use <em class="Code">$MPC_ROOT/config/MPC.cfg</em>
- as the MPC Configuration File.</li>
-
- <li class="Body">You may reference environment variables, accessed
- via the dollar sign (e.g., <em class="Code">$NAME</em>), on either
- side of the equals sign. In either this file or the MPC
- Configuration File (see below), an alternate form of environment
- variable reference may be used for variables which are not expected
- to be defined in all scenarios. These variables use the syntax
- <em class="Code">$?NAME</em> instead of <em class="Code">$NAME</em>.
- With this syntax, if the environment variable
- <em class="Code">NAME</em> is not defined, no error or warning is
- printed by MPC, and the substring starting with
- <em class="Code">$?NAME</em> until the next whitespace is expanded
- to the empty string.</li>
- </ul>
-
- <ul>
- <li class="BodyNoLead">
+ "Code">
+ <strong>/foo/bar_root/</strong>src
+ </em>, MPC would attempt to open and read <em class=
+ "Code">
+ <strong>/foo/bar_root/MPC/config/</strong>MPC.cfg
+ </em> as the MPC
+ Configuration File. If the base configuration file is not present,
+ MPC will try to use <em class="Code">$MPC_ROOT/config/MPC.cfg</em>
+ as the MPC Configuration File.
+ </p>
+
+ <p class="Body">
+ You may reference environment variables, accessed
+ via the dollar sign (e.g., <em class="Code">$NAME</em>), on either
+ side of the equals sign. In either this file or the MPC
+ Configuration File (see below), an alternate form of environment
+ variable reference may be used for variables which are not expected
+ to be defined in all scenarios. These variables use the syntax
+ <em class="Code">$?NAME</em> instead of <em class="Code">$NAME</em>.
+ With this syntax, if the environment variable
+ <em class="Code">NAME</em> is not defined, no error or warning is
+ printed by MPC, and the substring starting with
+ <em class="Code">$?NAME</em> until the next whitespace is expanded
+ to the empty string.
+ </p>
+
+
+
+
<h6 class="Head5">MPC Configuration File</h6>
- </li>
- <li class="BodyNoLead">In an effort to move away from the use of
- environment variables, a configuration file has been introduced.
- The configuration file (<em class="Code">MPC.cfg</em>) can contain
- settings to provide command line options, control logging and
- direct MPC to dynamic project types.</li>
- <li class="Body">The following keywords are allowed in the
- configuration file.</li>
+ <p class="BodyNoLead">
+ In an effort to move away from the use of
+ environment variables, a configuration file has been introduced.
+ The configuration file (<em class="Code">MPC.cfg</em>) can contain
+ settings to provide command line options, control logging and
+ direct MPC to dynamic project types.
+ </p>
- <li class="Body">
- <table border="1" summary="Configuration File Keywords">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Keyword</p>
- </th>
+ <p class="Body">
+ The following keywords are allowed in the
+ configuration file.
+ </p>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
+ <p class="Body">
+ <table border="1" summary="Configuration File Keywords">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Keyword</p>
+ </th>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command_line</em></p>
- </td>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Provide additional command line options
- to MPC. The value of this setting will be prepended to the
- options passed to <em class="Code">mwc.pl</em> or
- <em class="Code">mpc.pl</em>.</p>
- </td>
- </tr>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command_line</em>
+ </p>
+ </td>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">default_type</em></p>
- </td>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Provide additional command line options
+ to MPC. The value of this setting will be prepended to the
+ options passed to <em class="Code">mwc.pl</em> or
+ <em class="Code">mpc.pl</em>.
+ </p>
+ </td>
+ </tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Provide a single project type (as
- specified by the <em class="Code">-type</em> option) as the
- default project type.</p>
- </td>
- </tr>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">default_type</em>
+ </p>
+ </td>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dynamic_types</em></p>
- </td>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Provide a single project type (as
+ specified by the <em class="Code">-type</em> option) as the
+ default project type.
+ </p>
+ </td>
+ </tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This comma separated list points to
- directories in which MPC will search for Perl modules to
- implement additional MPC project types, base projects or
- template files. This setting can be used to augment or
- replace functionality in MPC. For each suitable directory
- found, it will add a <em class="Code">modules</em> include
- path for Perl to find modules, add a <em class=
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dynamic_types</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This comma separated list points to
+ directories in which MPC will search for Perl modules to
+ implement additional MPC project types, base projects or
+ template files. This setting can be used to augment or
+ replace functionality in MPC. For each suitable directory
+ found, it will add a <em class="Code">modules</em> include
+ path for Perl to find modules, add a <em class=
"Code">config</em> include path to locate base projects and
- a <em class="Code">template</em> include path to find MPC
- templates.</p>
- </td>
- </tr>
+ a <em class="Code">template</em> include path to find MPC
+ templates.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">includes</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">includes</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Similar to the <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Similar to the <em class=
"Code">-include</em> command line option, it adds the list
- of comma separated paths to the MPC include search
- paths.</p>
- </td>
- </tr>
+ of comma separated paths to the MPC include search
+ paths.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">logging</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">logging</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this setting contains <em class=
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this setting contains <em class=
"Code">info=1</em>, informational messages will be printed.
- If it contains <em class="Code">warn=1</em>, warning
- messages will be printed. If it contains <em class=
+ If it contains <em class="Code">warn=1</em>, warning
+ messages will be printed. If it contains <em class=
"Code">diag=1</em>, diagnostic messages will be printed. If
- it contains <em class="Code">debug=1</em>, debug message
- will be printed. And lastly, if it contains <em class=
+ it contains <em class="Code">debug=1</em>, debug message
+ will be printed. And lastly, if it contains <em class=
"Code">detail=1</em>, detail messages will be printed. If
- it contains none of these, MPC will not print out any
- information or warnings when processing projects or
- workspaces. Errors are always printed if any are
- encountered. The default value is <em class="Code">warn=1,
- diag=1, detail=1</em>.</p>
- </td>
- </tr>
+ it contains none of these, MPC will not print out any
+ information or warnings when processing projects or
+ workspaces. Errors are always printed if any are
+ encountered. The default value is <em class="Code">
+ warn=1,
+ diag=1, detail=1
+ </em>.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">main_functions</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">main_functions</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Provide additional main functions to be
- recognized in conjunction with automatic executable project
- recognition. The value assigned should be of the form
- <em class="Code">&lt;language&gt;:&lt;func name&gt;[,
- &lt;language&gt;:&lt;func name&gt;]*</em>. A function can
- be specified for all languages by only providing the
- function name.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Provide additional main functions to be
+ recognized in conjunction with automatic executable project
+ recognition. The value assigned should be of the form
+ <em class="Code">
+ &lt;language&gt;:&lt;func name&gt;[,
+ &lt;language&gt;:&lt;func name&gt;]*
+ </em>. A function can
+ be specified for all languages by only providing the
+ function name.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">verbose_ordering</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">verbose_ordering</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is set, mwc.pl will warn the
- user about references to projects in the <em class=
- "Code">after</em> keyword that have not been processed.</p>
- </td>
- </tr>
- </table>
- </li>
- </ul>
- </div>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is set, mwc.pl will warn the
+ user about references to projects in the <em class=
+ "Code">after</em> keyword that have not been processed.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
- <div>
- <h4 class="Head3">Environment Variables</h4>
+ </div>
- <ul>
- <li class="BodyNoLead">MPC recognizes a few environment variables
- that alter the way it performs certain tasks. The sections below
- describe each one and the effect it has on MPC.</li>
+ <div>
+ <h4 class="Head3">Environment Variables</h4>
+
+
+ <p class="BodyNoLead">
+ MPC recognizes a few environment variables
+ that alter the way it performs certain tasks. The sections below
+ describe each one and the effect it has on MPC.
+ </p>
- <li class="Body">The <em class=
+ <p class="Body">
+ The <em class=
"Code">MPC_DEPENDENCY_COMBINED_STATIC_LIBRARY</em> environment
- variable only affects the way workspace dependencies are created
- for <em class="Emphasis">static</em> projects with the <em class=
+ variable only affects the way workspace dependencies are created
+ for <em class="Emphasis">static</em> projects with the <em class=
"Code">em3</em>, <em class="Code">vc6</em>, <em class=
"Code">vc7</em>, <em class="Code">vc71</em>, vc8, vc9 and
- <em class="Code">vc10</em> project types. If this environment
- variable is set, MPC will generate inter-project dependencies for
- libraries within a single workspace. This is usually not desired
- since adding these dependencies in a static workspace has the side
- effect of including dependee libraries into the dependent
- library.</li>
-
- <li class="Body">The <em class="Code">MPC_GHS_UNIX</em> environment
- variable is only meaningful when generating the ghs project files.
- By default, the ghs type assumes that it is for Windows. Set this
- environment variable prior to running MPC if this is not the
- case.</li>
-
- <li class="Body">The <em class="Code">MPC_USE_WIN_COMMANDS</em>
- environment variable causes the Windows related pseudo template
- variables to be used regardless of the type of project being
- generated.</li>
- </ul>
- </div>
- </div>
+ <em class="Code">vc10</em> project types. If this environment
+ variable is set, MPC will generate inter-project dependencies for
+ libraries within a single workspace. This is usually not desired
+ since adding these dependencies in a static workspace has the side
+ effect of including dependee libraries into the dependent
+ library.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">MPC_GHS_UNIX</em> environment
+ variable is only meaningful when generating the ghs project files.
+ By default, the ghs type assumes that it is for Windows. Set this
+ environment variable prior to running MPC if this is not the
+ case.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">MPC_USE_WIN_COMMANDS</em>
+ environment variable causes the Windows related pseudo template
+ variables to be used regardless of the type of project being
+ generated.
+ </p>
- <div>
- <h3 class="Head2">Writing MPC and MWC Files</h3>
- <hr>
-
- <ul>
- <li class="Body">You may want to familiarize yourself with the
- various input files for MPC. The input file types and the syntax of
- each are discussed in the sections below.</li>
- </ul>
+ </div>
+ </div>
<div>
- <h4 class="Head3">Input Files</h4>
+ <a name="Writing_MPC_Files"></a>
+ <h3 class="Head2">Writing MPC and MWC Files</h3>
+ <hr>
+
+
+ <p class="Body">
+ You may want to familiarize yourself with the
+ various input files for MPC. The input file types and the syntax of
+ each are discussed in the sections below.
+ </p>
- <ul>
- <li class="BodyNoLead">There are four different input files
- associated with MPC. For most users of MPC, the main files of
- concern are mpc and mwc files.</li>
- </ul>
- <div>
- <h5 class="Head4">Project Files (mpc)</h5>
+ <div>
+ <h4 class="Head3">Input Files</h4>
+
+ <p class="BodyNoLead">
+ There are four different input files
+ associated with MPC. For most users of MPC, the main files of
+ concern are mpc and mwc files.
+ </p>
+
+
+ <div>
+ <h5 class="Head4">Project Files (mpc)</h5>
- <ul>
- <li class="BodyNoLead">Project files, those with the <em class=
+ <p class="Body">
+ Project files, those with the <em class=
"Code">mpc</em> extension, contain such things as include paths,
- library paths, source files and inter-project dependencies. An
- mpc file can contain one or more &ldquo;projects&rdquo; each of
- which needs to be uniquely named to avoid project generation
- errors. Projects represent build targets such as libraries and
- executables.</li>
- </ul>
- </div>
+ library paths, source files and inter-project dependencies. An
+ mpc file can contain one or more &ldquo;projects&rdquo; each of
+ which needs to be uniquely named to avoid project generation
+ errors. Projects represent build targets such as libraries and
+ executables.
+ </p>
- <div>
- <h5 class="Head4">Workspace Files (mwc)</h5>
-
- <ul>
- <li class="BodyNoLead">Workspaces are defined by providing a list
- of mpc files, directories or other mwc files in a single mwc
- file. For each mpc file, the Workspace Creator calls upon the
- Project Creator to generate the project. After all of the
- projects are successfully generated, the tool-specific workspace
- is generated containing the projects and any defined
- inter-project dependency information (if supported by the build
- tool). An mwc file can contain one or more
- &ldquo;workspaces,&rdquo; each of which needs to be uniquely
- named. If no workspace files are provided to the workspace
- creator, the current directory is traversed and any mpc files
- located will be part of the workspace that is generated.</li>
- </ul>
- </div>
+ </div>
- <div>
- <h5 class="Head4">Base Project Files (mpb)</h5>
-
- <ul>
- <li class="BodyNoLead">One of the many unique and useful features
- of MPC is that the project definition files can use inheritance.
- Project inheritance allows a user to set up a base project (mpb
- file) that can contain information that is applicable to all
- derived projects. Common project attributes, such as include
- paths, library paths, and inter-project dependencies, could be
- described in this base project and any project that inherits from
- it would contain this information as well.</li>
- </ul>
- </div>
+ <div>
+ <h5 class="Head4">Workspace Files (mwc)</h5>
+
+
+ <p class="Body">
+ Workspaces are defined by providing a list
+ of mpc files, directories or other mwc files in a single mwc
+ file. For each mpc file, the Workspace Creator calls upon the
+ Project Creator to generate the project. After all of the
+ projects are successfully generated, the tool-specific workspace
+ is generated containing the projects and any defined
+ inter-project dependency information (if supported by the build
+ tool). An mwc file can contain one or more
+ &ldquo;workspaces,&rdquo; each of which needs to be uniquely
+ named. If no workspace files are provided to the workspace
+ creator, the current directory is traversed and any mpc files
+ located will be part of the workspace that is generated.
+ </p>
- <div>
- <h5 class="Head4">Base Workspace Files (mwb)</h5>
+ </div>
- <ul>
- <li class="BodyNoLead">As with projects, workspaces can also
- inherit from other workspaces. A base workspace can provide
- workspace information that may be common to other
- workspaces.</li>
- </ul>
- </div>
- </div>
+ <div>
- <div>
- <h4 class="Head3">General Input File Syntax</h4>
+ <h5 class="Head4">Base Project Files (mpb)</h5>
+
+
+ <p class="Body">
+ One of the many unique and useful features
+ of MPC is that the project definition files can use inheritance.
+ Project inheritance allows a user to set up a base project (mpb
+ file) that can contain information that is applicable to all
+ derived projects. Common project attributes, such as include
+ paths, library paths, and inter-project dependencies, could be
+ described in this base project and any project that inherits from
+ it would contain this information as well.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Base Workspace Files (mwb)</h5>
+
+
+ <p class="Body">
+ As with projects, workspaces can also
+ inherit from other workspaces. A base workspace can provide
+ workspace information that may be common to other
+ workspaces.
+ </p>
+
+ </div>
+ </div>
- <ul>
- <li class="BodyNoLead">In this section we discuss the syntax of the
- various files. We also describe some of the default values that go
- along with these files.</li>
- </ul>
+ <div>
+ <h4 class="Head3">General Input File Syntax</h4>
- <div>
- <h5 class="Head4">mwc and mwb</h5>
- <ul>
- <li class="BodyNoLead">Workspaces can contain individual mpc
- files or directories. There can be one or more workspaces defined
- within a single mwc file.</li>
+ <p class="BodyNoLead">
+ In this section we discuss the syntax of the
+ various files. We also describe some of the default values that go
+ along with these files.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
- <p class="Code">workspace(optional name):
- optional_base_workspace {</p>
+ <div>
+ <h5 class="Head4">mwc and mwb files</h5>
- <p class="Code">&nbsp;&nbsp;file.mpc</p>
- <p class="Code">&nbsp;&nbsp;directory</p>
+ <p class="Body">
+ Workspaces can contain individual mpc
+ files or directories. There can be one or more workspaces defined
+ within a single mwc file.
+ </p>
- <p class="Code">&nbsp;&nbsp;other.mwc</p>
+ <blockquote>
- <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;exclude(vc6, vc7, vc71, vc8, vc9,
- vc10, nmake) {</p>
+ <p class="Code">
+ workspace(optional name):
+ optional_base_workspace {
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;this_directory</p>
+ <p class="Code">&nbsp;&nbsp;file.mpc</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;directory</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;other.mwc</p>
- <p class="Code">&nbsp;&nbsp;exclude(prop:microsoft) {</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;non_microsoft</p>
+ <p class="Code">
+ &nbsp;&nbsp;exclude(vc6, vc7, vc71, vc8, vc9,
+ vc10, nmake) {
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;this_directory</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;specific(rpmspec) {</p>
+ <p class="Code">&nbsp;</p>
+
+ <p class="Code">&nbsp;&nbsp;exclude(prop:microsoft) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;rpm_version = 1.0</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;non_microsoft</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
+
+ <p class="Code">&nbsp;</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;specific(rpmspec) {</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;rpm_version = 1.0</p>
- <li class="BodyNoLead">A workspace can be given a name. This is
- the value given in the parentheses after the keyword <em class=
+ <p class="Code">&nbsp;&nbsp;}</p>
+
+ <p class="Code">}</p>
+
+
+ </blockquote>
+
+ <p class="BodyNoLead">
+ A workspace can be given a name. This is
+ the value given in the parentheses after the keyword <em class=
"Code">workspace</em>. If the workspace is not given a name, the
- workspace name is taken from the name of the mwc file without the
- extension.</li>
+ workspace name is taken from the name of the mwc file without the
+ extension.
+ </p>
- <li class="Body">Workspaces can also inherit from other
- workspaces. In the above example, <em class=
+ <p class="Body">
+ Workspaces can also inherit from other
+ workspaces. In the above example, <em class=
"Code">optional_base_workspace</em> would be the base name of an
- mwb file with no extension that contains workspace information.
- This information would then be included in each workspace that
- inherits from it.</li>
-
- <li class="Body">The lines between the curly braces
- contain assignments, mpc files, directories, other
- workspace files or exclusion sections. For each listed item,
- <ul>
- <li>an mpc file will be included in the workspace</li>
-
- <li>a directory recursively traversed and any mpc files
- found will be included</li>
- <li><a name="AggregatedWorkspace"></a>a workspace file will be aggregated into the main workspace.</li>
- </ul>
-
- <li class="Body">A workspace can have assignments interspersed
- within the directories and mpc files. These assignments modify
- the way projects are generated.</li>
-
- <li class="Body">The <em class="Code">cmdline</em> setting can be
- used to provide command line options that would normally be
- passed to <em class="Code">mwc.pl</em> (see <a href=
+ mwb file with no extension that contains workspace information.
+ This information would then be included in each workspace that
+ inherits from it.
+ </p>
+
+ <p class="Body">
+ The lines between the curly braces
+ contain assignments, mpc files, directories, other
+ workspace files or exclusion sections. For each listed item,
+ <ul>
+ <li>an mpc file will be included in the workspace,</li>
+
+ <li>
+ a directory recursively traversed and any mpc files
+ found will be included,
+ </li>
+ <li>
+ <a name="AggregatedWorkspace"></a>a workspace file will be aggregated into the main workspace.
+ </li>
+ </ul>
+
+ <p class="Body">
+ A workspace can have assignments interspersed
+ within the directories and mpc files. These assignments modify
+ the way projects are generated.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">cmdline</em> setting can be
+ used to provide command line options that would normally be
+ passed to <em class="Code">mwc.pl</em> (see <a href=
"MakeProjectCreator.html#Command%20Line%20Options" class=
"XRef">Command Line Options</a>). However, the <em class=
"Code">-exclude</em>, <em class="Code">-for_eclipse</em>,
- <em class="Code">-gendot</em>, <em class="Code">-gfeature_file</em>,
- <em class="Code">-into</em>, <em class="Code">-make_coexistence</em>,
- <em class="Code">-recurse</em>, <em class="Code">-reldefs</em>,
- and <em class="Code">-type</em> options as well as input files
- are ignored. Environment variables may be accessed through
- <em class="Code">$NAME</em>, where <em class="Code">NAME</em> is
- the environment variable name. The <em class="Code">cmdline</em>
- assignment may be useful for workspaces that require specific
- <em class="Code">mwc.pl</em> options in order to process
- correctly.</li>
-
- <li class="Body">The only other setting supported by mwc.pl is
- <em class="Code">implicit</em>. If <em class="Code">implicit</em>
- is set to <em class="Code">1</em> then default project files are
- generated in each directory where no mpc file exists. The
- <em class="Code">implicit</em> keyword can also be set to the
- name of a base project. In this case, the implicitly generated
- project will inherit from the base project specified in the
- assignment. Either way, if the directory does not contain files
- that can be used within a project, no project is created. Setting
- <em class="Code">implicit</em> can be useful when you want to
- define specific workspaces, but the MPC defaults are sufficient
- for the directories involved within the workspace.</li>
-
- <li class="Body"><a name="workspaceSpecific"></a>Workspaces
- support a <em class="Code">specific</em> clause
- conceptually and syntactically similar to <a
- href="#projectSpecific">the project <em
- class="Code">specific</em> clause.</a> Any variables
- assigned within the clause are only available to
- workspaces, not to projects. Two sorts of assignments are
- possible: first are assignments to the keywords
- <em class="Code">cmdline</em> and <em class="Code">implicit</em>
- and the second are type-specific variables. Consult the
- documentation for the type for details on type-specific variables.
- Keyword assignments impact the entire workspace, not just the
- <em class="Code">specific</em> scope.</li>
-
- <li class="Body">Scoped assignments are assignments that are
- associated with specific mpc files or directories listed with the
- scope of the assignment. The following example shows a scoped
- assignment of <em class="Code">cmdline</em> that only applies to
- <em class="Code">one of the mpc files listed in the
- workspace</em>. In this example, <em class=
+ <em class="Code">-gendot</em>, <em class="Code">-gfeature_file</em>,
+ <em class="Code">-into</em>, <em class="Code">-make_coexistence</em>,
+ <em class="Code">-recurse</em>, <em class="Code">-reldefs</em>,
+ and <em class="Code">-type</em> options as well as input files
+ are ignored. Environment variables may be accessed through
+ <em class="Code">$NAME</em>, where <em class="Code">NAME</em> is
+ the environment variable name. The <em class="Code">cmdline</em>
+ assignment may be useful for workspaces that require specific
+ <em class="Code">mwc.pl</em> options in order to process
+ correctly.
+ </p>
+
+ <p class="Body">
+ The only other setting supported by mwc.pl is
+ <em class="Code">implicit</em>. If <em class="Code">implicit</em>
+ is set to <em class="Code">1</em> then default project files are
+ generated in each directory where no mpc file exists. The
+ <em class="Code">implicit</em> keyword can also be set to the
+ name of a base project. In this case, the implicitly generated
+ project will inherit from the base project specified in the
+ assignment. Either way, if the directory does not contain files
+ that can be used within a project, no project is created. Setting
+ <em class="Code">implicit</em> can be useful when you want to
+ define specific workspaces, but the MPC defaults are sufficient
+ for the directories involved within the workspace.
+ </p>
+
+ <p class="Body">
+ <a name="workspaceSpecific"></a>Workspaces
+ support a <em class="Code">specific</em> clause
+ conceptually and syntactically similar to <a
+ href="#projectSpecific">
+ the project <em
+class="Code">specific</em> clause.
+ </a> Any variables
+ assigned within the clause are only available to
+ workspaces, not to projects. Two sorts of assignments are
+ possible: first are assignments to the keywords
+ <em class="Code">cmdline</em> and <em class="Code">implicit</em>
+ and the second are type-specific variables. Consult the
+ documentation for the type for details on type-specific variables.
+ Keyword assignments impact the entire workspace, not just the
+ <em class="Code">specific</em> scope.
+ </p>
+
+ <p class="Body">
+ Scoped assignments are assignments that are
+ associated with specific mpc files or directories listed with the
+ scope of the assignment. The following example shows a scoped
+ assignment of <em class="Code">cmdline</em> that only applies to
+ <em class="Code">
+ one of the mpc files listed in the
+ workspace
+ </em>. In this example, <em class=
"Code">directory/foo.mpc</em> would be processed as if the
- <em class="Code">-static</em> option had been passed on the
- command line whereas other directories and mpc files would
- not.</li>
+ <em class="Code">-static</em> option had been passed on the
+ command line whereas other directories and mpc files would
+ not.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">workspace {</p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <p class="Code">workspace {</p>
- <p class="Code">&nbsp;&nbsp;static {</p>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;cmdline += -static</p>
+ <p class="Code">&nbsp;&nbsp;static {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;directory/foo.mpc</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;cmdline += -static</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;directory/foo.mpc</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;exclude(gnuace, make) {</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;some.mpc</p>
+ <p class="Code">&nbsp;&nbsp;exclude(gnuace, make) {</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;some.mpc</p>
+
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;// Associate the name "other" with
- dir3</p>
+ <p class="Code">
+ &nbsp;&nbsp;// Associate the name "other" with
+ dir3
+ </p>
- <p class="Code">&nbsp;&nbsp;associate(other) {</p>
+ <p class="Code">&nbsp;&nbsp;associate(other) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;dir3</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;dir3</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
- </li>
+ </blockquote>
- <li class="Body">Exclusion sections are used to prevent
- directories and mpc files from being processed. These excluded
- directories and mpc files will be skipped when generating project
- files and workspaces. The <em class="Code">exclude</em> keyword
- accepts project types as well as properties (see <a href=
+ <p class="Body">
+ Exclusion sections are used to prevent
+ directories and mpc files from being processed. These excluded
+ directories and mpc files will be skipped when generating project
+ files and workspaces. The <em class="Code">exclude</em> keyword
+ accepts project types as well as properties (see <a href=
"MakeProjectCreator.html#properties" class="XRef">Properties</a>)
- within the parentheses (as above), which will cause the workspace
- creator to only exclude the listing for particular types. If no
- types are provided, exclusion will take place for all project
- types.</li>
-
- <li class="Body">The <em class="Code">associate</em> scope
- associates a name with one or more directories. This does not add
- directories to a workspace, it only makes an association. This
- may or may not have an effect on the generated workspace; it
- depends solely upon whether the project type supports
- associations. Currently <em class="Code">automake</em> is the
- only project type that supports associations. Each directory
- listed under an association is grouped together and built
- conditionally based on the association name.</li>
-
- <li class="Body">Comments are similar to the C++ style comments.
- Any text after a double slash (<em class="Code">//</em> ) is
- considered a comment.</li>
- </ul>
- </div>
+ within the parentheses (as above), which will cause the workspace
+ creator to only exclude the listing for particular types. If no
+ types are provided, exclusion will take place for all project
+ types.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">associate</em> scope
+ associates a name with one or more directories. This does not add
+ directories to a workspace, it only makes an association. This
+ may or may not have an effect on the generated workspace; it
+ depends solely upon whether the project type supports
+ associations. Currently <em class="Code">automake</em> is the
+ only project type that supports associations. Each directory
+ listed under an association is grouped together and built
+ conditionally based on the association name.
+ </p>
+
+ <p class="Body">
+ Comments are similar to the C++ style comments.
+ Any text after a double slash (<em class="Code">//</em> ) is
+ considered a comment.
+ </p>
+
+ </div>
- <div>
- <h5 class="Head4">mpc and mpb</h5>
+ <div>
+ <h5 class="Head4">mpc and mpb files</h5>
- <div>
- <h6 class="Head5">Project Declarations</h6>
+ <div>
+ <a name="Base_Project"></a>
+ <h6 class="Head5">Project Declarations</h6>
- <ul>
- <li class="BodyNoLead">Project declarations are similar to
- workspace declarations, but are a bit more complex. An mpc file
- can contain one or more &ldquo;projects&rdquo; and each project
- can inherit from base projects.</li>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Body">
+ Project declarations are similar to
+ workspace declarations, but are a bit more complex. An mpc file
+ can contain one or more &ldquo;projects&rdquo; and each project
+ can inherit from base projects.
+ </p>
- <p class="Code">project(optional name): base_project,
- another_base_project {</p>
+ <blockquote>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;exename = client</p>
+ <p class="Code">
+ project(optional name): base_project,
+ another_base_project {
+ </p>
- <p class="Code">&nbsp;&nbsp;includes += directory_name
- other_directory</p>
+ <p class="Code">&nbsp;&nbsp;exename = client</p>
- <p class="Code">&nbsp;&nbsp;libpaths += /usr/X11R6/lib</p>
+ <p class="Code">
+ &nbsp;&nbsp;includes += directory_name
+ other_directory
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;libpaths += /usr/X11R6/lib</p>
- <p class="Code">&nbsp;&nbsp;Header_Files {</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.h</p>
+ <p class="Code">&nbsp;&nbsp;Header_Files {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.h</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.h</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;fileN.h</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.h</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;fileN.h</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;Source_Files {</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp</p>
+ <p class="Code">&nbsp;&nbsp;Source_Files {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.cpp</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;fileN.cpp</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.cpp</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;fileN.cpp</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">}</p>
- <li class="BodyNoLead">If the optional project name is not
- given, then the project name is taken from the name of the mpc
- file without the extension. Therefore, if your mpc file is
- going to contain multiple projects, it is important to provide
- project names to prevent each generated project from
- overwriting the other. MPC will issue an error and stop if
- duplicate project names are detected.</li>
- </ul>
- </div>
+ </blockquote>
- <div>
- <h6 class="Head5">Base Projects</h6>
+ <p class="BodyNoLead">
+ If the optional project name is not
+ given, then the project name is taken from the name of the mpc
+ file without the extension. Therefore, if your mpc file is
+ going to contain multiple projects, it is important to provide
+ project names to prevent each generated project from
+ overwriting the other. MPC will issue an error and stop if
+ duplicate project names are detected.
+ </p>
- <ul>
- <li class="BodyNoLead">Base projects can be of the extension
- <em class="Code">mpb</em> and <em class="Code">mpc</em>. If a
- file with the name of the base project with an <em class=
- "Code">mpb</em> or <em class="Code">mpc</em> extension cannot
- be found within the mpc include search path, a fatal error is
- issued and processing halts.</li>
- </ul>
- </div>
+ </div>
- <div>
- <h6 class="Head5">Assignment Keywords</h6>
-
- <ul>
- <li class="BodyNoLead">This table shows the keywords that can
- be used in an assignment (i.e., <em class="Code">=</em>,
- <em class="Code">+=</em> or <em class="Code">-=</em> ) within
- an mpc file. The most commonly used keywords are shown in bold
- face.</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle"><a name="82186"></a>Assignment
- Keywords</h6>
-
- <table border="1" summary="Assignment Keywords">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Keyword</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">after</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies that this project must be
- built after 1 or more project names listed.</p>
- <p class="Tbl-Body">An extended syntax is available
- in order to associate name-value pairs with a
- dependency: <em class="Code">&lt;project
- name[:name=value]&gt;</em><br>
+ <div>
+ <h6 class="Head5">Base Projects</h6>
+
+
+ <p class="BodyNoLead">
+ Base projects can be of the extension
+ <em class="Code">mpb</em> and <em class="Code">mpc</em>. If a
+ file with the name of the base project with an <em class=
+ "Code">mpb</em> or <em class="Code">mpc</em> extension cannot
+ be found within the mpc include search path, a fatal error is
+ issued and processing halts.
+ </p>
+ </div>
+
+ <div>
+ <h6 class="Head5">Assignment Keywords</h6>
+
+
+ <p class="Body">
+ This table shows the keywords that can
+ be used in an assignment (i.e., <em class="Code">=</em>,
+ <em class="Code">+=</em> or <em class="Code">-=</em> ) within
+ an mpc file. The most commonly used keywords are shown in bold
+ face.
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ <a name="82186"></a>Assignment
+ Keywords
+ </h6>
+
+ <p class="Body">
+ <table border="1" summary="Assignment Keywords">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Keyword</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">after</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies that this project must be
+ built after 1 or more project names listed.
+ </p>
+ <p class="Tbl-Body">
+ An extended syntax is available
+ in order to associate name-value pairs with a
+ dependency: <em class="Code">
+ &lt;project
+ name[:name=value]&gt;
+ </em><br>
These name-value pairs may be used in the creation
- of the dependencies of the project.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">avoids</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies which features should be
- disabled in order to generate the project file. Under
- the GNUACE type, it also specifies which make macros
- should not be set to build the target.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">custom_only</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This setting instructs MPC to
- create projects that only contain custom generation
- targets. Any files included in the projects will be
- provided by custom component lists defined through the
- use of <em class="Code">Define_Custom</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dependent_upon</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This keyword can only be used
- as a header component scoped setting (ie. inside
- the scope of Header_Files). It determines which
- file the header file is dependent upon for vc8,
- and vc9 only.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dllout</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If defined, specifies where the
- dynamic libraries will be placed. This overrides libout
- in the dynamic case.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">dynamicflags</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies preprocessor flags passed
- to the compiler when building a dynamic library.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">exename</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Determines that the project will be
- an executable and the name of the executable
- target.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">exeout</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies where executables will be
- placed.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">includes</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies one or more directories
- to supply to the compiler for use as include search
- paths.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">libout</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies where the dynamic and
- static libraries will be placed.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">libpaths</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies one or more directories
- to supply to the compiler for use as library search
- paths.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">libs</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies one or more libraries to
- link into the target. Library modifiers may be added
- when being processed in the template file. For example,
- library modifiers are added when using the vc6 project
- type.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">lit_libs</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as libs except
- that a library modifier will not be added.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">macros</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Values supplied here will be passed
- directly to the compiler as command line defined
- macros.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">managed</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies that the source files
- should be compiled as managed C++. This is only
- supported by the <em class="Code">nmake</em>,
- <em class="Code">vc7</em>, <em class="Code">vc71</em>,
- <em class="Code">vc8</em>, <em class="Code">vc9</em>,
- and <em class="Code">vc10</em> project types.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">no_pch</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">It specifies that precompiled
- headers should not be used for the source files listed
- within the scope of it&rsquo;s setting. This keyword
- can only be used as a source component scoped setting
- (i.e., inside the scope of Source_Files).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pch_header</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The name of the precompiled header
- file. See the discussion below this table for more
- information.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pch_source</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The name of the precompiled source
- file. See the discussion below this table for more
- information.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">postbuild</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is defined in the project,
- the value will be interpreted as commands to run after
- the project has been successfully built. The <em class=
+ of the dependencies of the project.
+
+
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">avoids</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies which features should be
+ disabled in order to generate the project file. Under
+ the GNUACE type, it also specifies which make macros
+ should not be set to build the target.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">custom_only</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This setting instructs MPC to
+ create projects that only contain custom generation
+ targets. Any files included in the projects will be
+ provided by custom component lists defined through the
+ use of <em class="Code">Define_Custom</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dependent_upon</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This keyword can only be used
+ as a header component scoped setting (ie. inside
+ the scope of Header_Files). It determines which
+ file the header file is dependent upon for vc8,
+ and vc9 only.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dllout</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If defined, specifies where the
+ dynamic libraries will be placed. This overrides libout
+ in the dynamic case.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">dynamicflags</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies preprocessor flags passed
+ to the compiler when building a dynamic library.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">exename</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Determines that the project will be
+ an executable and the name of the executable
+ target.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">exeout</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies where executables will be
+ placed.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">includes</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies one or more directories
+ to supply to the compiler for use as include search
+ paths.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">libout</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies where the dynamic and
+ static libraries will be placed.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">libpaths</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies one or more directories
+ to supply to the compiler for use as library search
+ paths.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">libs</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies one or more libraries to
+ link into the target. Library modifiers may be added
+ when being processed in the template file. For example,
+ library modifiers are added when using the vc6 project
+ type.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">lit_libs</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as libs except
+ that a library modifier will not be added.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">macros</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Values supplied here will be passed
+ directly to the compiler as command line defined
+ macros.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">managed</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies that the source files
+ should be compiled as managed C++. This is only
+ supported by the <em class="Code">nmake</em>,
+ <em class="Code">vc7</em>, <em class="Code">vc71</em>,
+ <em class="Code">vc8</em>, <em class="Code">vc9</em>,
+ and <em class="Code">vc10</em> project types.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">no_pch</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ It specifies that precompiled
+ headers should not be used for the source files listed
+ within the scope of it&rsquo;s setting. This keyword
+ can only be used as a source component scoped setting
+ (i.e., inside the scope of Source_Files).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pch_header</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The name of the precompiled header
+ file. See the discussion below this table for more
+ information.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pch_source</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The name of the precompiled source
+ file. See the discussion below this table for more
+ information.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">postbuild</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is defined in the project,
+ the value will be interpreted as commands to run after
+ the project has been successfully built. The <em class=
"Code">&lt;% %&gt;</em> construct (see <a href=
- "MakeProjectCreator.html#MPD%20Syntax" class=
+ "MakeProjectCreator.html#MPD_Syntax" class=
"XRef">Template Files</a>) can be used within this
- value to access template variables and functions of the
- template parser. See <a href=
- "#Common%20Pseudo%20Variables" class="XRef">Common
- Pseudo Variables</a> for a list of pseudo variables
- that are also available.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">postclean</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is defined in the project,
- the value will be interpreted as commands to run after
- the project has been cleaned. It should be noted that
- this setting is not supported by all project types. As
- with <em class="Code">postbuild</em>, the <em class=
+ value to access template variables and functions of the
+ template parser. See <a href=
+ "#Common_Pseudo_Variables" class="XRef">
+ Common
+ Pseudo Variables
+ </a> for a list of pseudo variables
+ that are also available.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">postclean</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is defined in the project,
+ the value will be interpreted as commands to run after
+ the project has been cleaned. It should be noted that
+ this setting is not supported by all project types. As
+ with <em class="Code">postbuild</em>, the <em class=
"Code">&lt;% %&gt;</em> construct (see <a href=
- "MakeProjectCreator.html#MPD%20Syntax" class=
+ "MakeProjectCreator.html#MPD_Syntax" class=
"XRef">Template Files</a>) can be used within this
- value to access template variables and functions of the
- template parser. See <a href=
- "#Common%20Pseudo%20Variables" class="XRef">Common
- Pseudo Variables</a> for a list of pseudo variables
- that are also available.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">prebuild</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is defined in the project,
- the value will be interpreted as commands to run before
- the project has been built. As with <em class=
- "Code">postbuild</em>, the <em class="Code">&lt;%
- %&gt;</em> construct (see <a href=
- "MakeProjectCreator.html#MPD%20Syntax" class=
+ value to access template variables and functions of the
+ template parser. See <a href=
+ "#Common_Pseudo_Variables" class="XRef">
+ Common
+ Pseudo Variables
+ </a> for a list of pseudo variables
+ that are also available.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">prebuild</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is defined in the project,
+ the value will be interpreted as commands to run before
+ the project has been built. As with <em class=
+ "Code">postbuild</em>, the <em class="Code">
+ &lt;%
+ %&gt;
+ </em> construct (see <a href=
+ "MakeProjectCreator.html#MPD_Syntax" class=
"XRef">Template Files</a>) can be used within this
- value to access template variables and functions of the
- template parser. See <a href=
- "#Common%20Pseudo%20Variables" class="XRef">Common
- Pseudo Variables</a> for a list of pseudo variables
- that are also available.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pure_libs</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is similar to <em class=
+ value to access template variables and functions of the
+ template parser. See <a href=
+ "#Common_Pseudo_Variables" class="XRef">
+ Common
+ Pseudo Variables
+ </a> for a list of pseudo variables
+ that are also available.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pure_libs</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is similar to <em class=
"Code">lit_libs</em> except that no prefix or extension
- is added to the names specified.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">recurse</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If set to 1, MPC will recurse into
- directories listed under component listings (such as
- Source_Files, Header_Files, etc.) and add any component
- corresponding files to the list. This keyword can be
- used as a global project setting or a component scoped
- setting.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">recursive_includes</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is similar to <em class=
+ is added to the names specified.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">recurse</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If set to 1, MPC will recurse into
+ directories listed under component listings (such as
+ Source_Files, Header_Files, etc.) and add any component
+ corresponding files to the list. This keyword can be
+ used as a global project setting or a component scoped
+ setting.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">recursive_includes</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is similar to <em class=
"Code">includes</em> in that it provides include paths
- to the compiler. However, each path supplied will be
- recursively searched for sub-directories which will
- also be provided as include paths to the compiler.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">recursive_libpaths</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is similar to <em class=
+ to the compiler. However, each path supplied will be
+ recursively searched for sub-directories which will
+ also be provided as include paths to the compiler.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">recursive_libpaths</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is similar to <em class=
"Code">libpaths</em> in that it provides library search
- paths to the linker. However, each path supplied will
- be recursively searched for sub-directories which will
- also be provided as library search paths to the
- linker.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">requires</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies which features should be
- enabled in order to generate the project file. Under
- the GNUACE type, it also specifies which make macros
- should be set to build the target.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">sharedname</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Determines that the project will be
- a library and the name of the dynamic library target.
- See the discussion below this table for more
- information.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">staticflags</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies preprocessor flags passed
- to the compiler when building a static library.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="Bold"><em class=
- "TableCode">staticname</em></em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Determines that the project will be
- a library and the name of the static library
- target.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">tagchecks</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">For GNUACE Make only, specifies one
- or more names to search for in the macros specified by
- tagname.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">tagname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies the GNUACE Make macro to
- check before building the target.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">version</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Specifies the version number for
- the library or executable.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">webapp</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Determines whether the project is a
- Web Application. A web application project will have no
- project file written but the information will be
- included in the workspace if web applications are
- supported by the project type.</p>
- </td>
- </tr>
- </table>
- </li>
-
- <li class="BodyNoLead">Assignments can also use the <em class=
+ paths to the linker. However, each path supplied will
+ be recursively searched for sub-directories which will
+ also be provided as library search paths to the
+ linker.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">requires</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies which features should be
+ enabled in order to generate the project file. Under
+ the GNUACE type, it also specifies which make macros
+ should be set to build the target.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">sharedname</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Determines that the project will be
+ a library and the name of the dynamic library target.
+ See the discussion below this table for more
+ information.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">staticflags</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies preprocessor flags passed
+ to the compiler when building a static library.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="Bold">
+ <em class=
+ "TableCode">staticname</em>
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Determines that the project will be
+ a library and the name of the static library
+ target.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">tagchecks</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ For GNUACE Make only, specifies one
+ or more names to search for in the macros specified by
+ tagname.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">tagname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies the GNUACE Make macro to
+ check before building the target.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">version</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Specifies the version number for
+ the library or executable.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">webapp</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Determines whether the project is a
+ Web Application. A web application project will have no
+ project file written but the information will be
+ included in the workspace if web applications are
+ supported by the project type.
+ </p>
+ </td>
+ </tr>
+ </table>
+
+ </p>
+
+ <p class="Body">
+ Assignments can also use the <em class=
"Code">+=</em> and <em class="Code">-=</em> operators to add
- and subtract values from keyword values.</li>
-
- <li class="Body">Assignments can be bracketed by curly braces
- so they can span multiple lines. The opening curly brace must
- be the last thing on the same line as the operator and the closing
- brace must be on its own line (but can have leading white space).
- Optionally, \n, \s, or \ns can be included after the operator. These
- indicate that new lines should be retained (\n) and leading white space
- should be retained (\s).</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
- <p class="Code">specific(rpmspec) {</p>
- <p class="Code">&nbsp;rpm_description = \ns {</p>
- <p class="Code">This description</p>
- <p class="Code">spans multiple lines.</p>
- <p class="Code">&nbsp;}</p>
- <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">If a <em class="Code">sharedname</em> is
- specified in the mpc file and <em class="Code">staticname</em>
- is not used, then <em class="Code">staticname</em> is assumed
- to be the same as <em class="Code">sharedname</em>. This also
- applies in the opposite direction.</li>
-
- <li class="Body">If neither exename, sharedname nor staticname
- is specified, MPC will search the source files for a <em class=
+ and subtract values from keyword values.
+ </p>
+
+ <p class="Body">
+ Assignments can be bracketed by curly braces
+ so they can span multiple lines. The opening curly brace must
+ be the last thing on the same line as the operator and the closing
+ brace must be on its own line (but can have leading white space).
+ Optionally, \n, \s, or \ns can be included after the operator. These
+ indicate that new lines should be retained (\n) and leading white space
+ should be retained (\s).
+ </p>
+
+ <blockquote>
+
+ <p class="Code">specific(rpmspec) {</p>
+ <p class="Code">&nbsp;rpm_description = \ns {</p>
+ <p class="Code">This description</p>
+ <p class="Code">spans multiple lines.</p>
+ <p class="Code">&nbsp;}</p>
+ <p class="Code">}</p>
+
+ </blockquote>
+
+ <p class="Body">
+ If a <em class="Code">sharedname</em> is
+ specified in the mpc file and <em class="Code">staticname</em>
+ is not used, then <em class="Code">staticname</em> is assumed
+ to be the same as <em class="Code">sharedname</em>. This also
+ applies in the opposite direction.
+ </p>
+
+ <p class="Body">
+ If neither exename, sharedname nor staticname
+ is specified, MPC will search the source files for a <em class=
"Code">main</em> function. If a <em class="Code">main</em> is
- found, the exename will be set to the name of the file, minus
- the extension, that contained the <em class="Code">main</em>
- function. Otherwise, sharedname and staticname will be set to
- the project name.</li>
-
- <li class="Body">If the project name, exename, sharedname or
- staticname contain an asterisk it instructs MPC to dynamically
- determine a portion of the name based on certain defaults. If
- the project name contains an asterisk, then the asterisk will
- be replaced with the default project name. If exename,
- sharedname or staticname contains an asterisk, then the
- asterisk will be replaced with the project name.</li>
-
- <li class="Body">If the <em class="Code">pch_header</em>
- keyword is not used and a file exists, in the directory in
- which the mpc file is located, that matches <em class=
+ found, the exename will be set to the name of the file, minus
+ the extension, that contained the <em class="Code">main</em>
+ function. Otherwise, sharedname and staticname will be set to
+ the project name.
+ </p>
+
+ <p class="Body">
+ If the project name, exename, sharedname or
+ staticname contain an asterisk it instructs MPC to dynamically
+ determine a portion of the name based on certain defaults. If
+ the project name contains an asterisk, then the asterisk will
+ be replaced with the default project name. If exename,
+ sharedname or staticname contains an asterisk, then the
+ asterisk will be replaced with the project name.
+ </p>
+
+ <p class="Body">
+ If the <em class="Code">pch_header</em>
+ keyword is not used and a file exists, in the directory in
+ which the mpc file is located, that matches <em class=
"Code">*_pch.h</em> it is assumed to be the precompiled header
- for that directory. If there are multiple pch files in the
- directory, then the precompiled header that closely matches the
- project name will be chosen. Similar logic applies for the
- <em class="Code">pch_source</em> keyword.</li>
- </ul>
- </div>
+ for that directory. If there are multiple pch files in the
+ directory, then the precompiled header that closely matches the
+ project name will be chosen. Similar logic applies for the
+ <em class="Code">pch_source</em> keyword.
+ </p>
- <div>
- <a name="16907"></a>
+ </div>
- <h6 class="Head5">Components</h6>
+ <div>
+ <a name="16907"></a>
- <ul>
- <li class="BodyNoLead">An mpc file can also specify the files
- to be included in the generated &ldquo;project&rdquo; file.
- These files are specified using the component names shown in
- the following table. However, most of the time users will want
- to allow MPC to provide the default values for project
- files.</li>
+ <h6 class="Head5">Components</h6>
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Component Names and Default
- Values</h6>
- <table border="1" summary=
+ <p class="BodyNoLead">
+ An mpc file can also specify the files
+ to be included in the generated &ldquo;project&rdquo; file.
+ These files are specified using the component names shown in
+ the following table. However, most of the time users will want
+ to allow MPC to provide the default values for project
+ files.
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ Component Names and Default
+ Values
+ </h6>
+
+ <table border="1" summary=
"Component Names and Default Values">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Name</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Default Value</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Source_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that have the following extensions:
- <em class="Code">cpp</em>, <em class="Code">cxx</em>,
- <em class="Code">cc</em>, <em class="Code">c</em>, and
- <em class="Code">C</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Header_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that have the following extensions:
- <em class="Code">h</em>, hpp, <em class=
- "Code">hxx</em>, and <em class="Code">hh</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Inline_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that have the following extensions:
- <em class="Code">i</em> and <em class=
- "Code">inl</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Template_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that end in the following: <em class=
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Name</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Default Value</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Source_Files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that have the following extensions:
+ <em class="Code">cpp</em>, <em class="Code">cxx</em>,
+ <em class="Code">cc</em>, <em class="Code">c</em>, and
+ <em class="Code">C</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Header_Files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that have the following extensions:
+ <em class="Code">h</em>, hpp, <em class=
+ "Code">hxx</em>, and <em class="Code">hh</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Inline_Files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that have the following extensions:
+ <em class="Code">i</em> and <em class=
+ "Code">inl</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Template_Files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that end in the following: <em class=
"Code">_T.cpp</em>, <em class="Code">_T.cxx</em>,
- <em class="Code">_T.cc</em>, <em class=
- "Code">_T.c</em>, and <em class="Code">_T.C</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Documentation_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that match the following: <em class=
+ <em class="Code">_T.cc</em>, <em class=
+ "Code">_T.c</em>, and <em class="Code">_T.C</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Documentation_Files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that match the following: <em class=
"Code">README</em>, <em class="Code">readme</em>,
- <em class="Code">.doc</em>, <em class="Code">.html</em>
- and <em class="Code">.txt</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">Resource_Files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Defaults to all files in the
- directory that match the project name and have an
- <em class="Code">rc</em> extension.</p>
- </td>
- </tr>
- </table>
- </li>
+ <em class="Code">.doc</em>, <em class="Code">.html</em>
+ and <em class="Code">.txt</em>.
+ </p>
+ </td>
+ </tr>
- <li class="Body">If a component is not specified in the mpc
- file, the default value will be used. To disallow a particular
- set of files that may exist in the directory, you must declare
- an empty set of the particular component type.</li>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">Resource_Files</em>
+ </p>
+ </td>
- <li class="Body">Each component name accepts two forms. The
- first form is a simple list of files within the construct.</li>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Defaults to all files in the
+ directory that match the project name and have an
+ <em class="Code">rc</em> extension.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Body">
+ If a component is not specified in the mpc
+ file, the default value will be used. To disallow a particular
+ set of files that may exist in the directory, you must declare
+ an empty set of the particular component type.
+ </p>
- <p class="Code">Source_Files {</p>
+ <p class="Body">
+ Each component name accepts two forms. The
+ first form is a simple list of files within the construct.
+ </p>
- <p class="Code">&nbsp;&nbsp;file1.cpp</p>
+ <blockquote>
- <p class="Code">&nbsp;&nbsp;file2.cpp</p>
- <p class="Code">}</p>
+ <p class="Code">Source_Files {</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;file1.cpp</p>
- <li class="Body">The second form is a complex list of files
- within named blocks.</li>
+ <p class="Code">&nbsp;&nbsp;file2.cpp</p>
- <li style="list-style: none">
- <a name="MPC grouping example"></a>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
- <p class="Code">Source_Files(MACRO_NAME) {</p>
+ </blockquote>
- <p class="Code">&nbsp;&nbsp;BlockA {</p>
+ <p class="Body">
+ The second form is a complex list of files
+ within named blocks.
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp</p>
+ <blockquote>
+ <a name="MPC grouping example"></a>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.cpp</p>
- <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;BlockB {</p>
+ <p class="Code">Source_Files(MACRO_NAME) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file3.cpp</p>
+ <p class="Code">&nbsp;&nbsp;BlockA {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file4.cpp</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file2.cpp</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;BlockB {</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file3.cpp</p>
- <li class="Body">The second form allows the user to logically
- group the files to make future maintenance easier. Using this
- form has the effect of visually grouping files in the generated
- project file for the <em class="Code">em3</em>, <em class=
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;file4.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;}</p>
+
+ <p class="Code">}</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ The second form allows the user to logically
+ group the files to make future maintenance easier. Using this
+ form has the effect of visually grouping files in the generated
+ project file for the <em class="Code">em3</em>, <em class=
"Code">gnuace</em>, <em class="Code">vc6</em>, <em class=
"Code">vc7</em>, <em class="Code">vc71</em>, vc8, vc9 and
- <em class="Code">vc10</em> project types.</li>
+ <em class="Code">vc10</em> project types.
+ </p>
- <li class="Body">If a file is listed in the <em class=
+ <p class="Body">
+ If a file is listed in the <em class=
"Code">Source_Files</em> component list and a corresponding
- header or inline file exists in the directory, it is added to
- the corresponding component list unless it is already
- listed.</li>
- </ul>
- </div>
+ header or inline file exists in the directory, it is added to
+ the corresponding component list unless it is already
+ listed.
+ </p>
- <div>
- <h6 class="Head5">Verbatim Clause</h6>
+ </div>
- <ul>
- <li class="BodyNoLead">The <em class="Code">verbatim</em>
- construct can be used to place text into a generated project
- file verbatim. The <em class="Code">verbatim</em> syntax is as
- follows:</li>
+ <div>
+ <h6 class="Head5">Verbatim Clause</h6>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
- <p class="Code">verbatim(&lt;project type&gt;,
- &lt;location&gt;) {</p>
+ <p class="BodyNoLead">
+ The <em class="Code">verbatim</em>
+ construct can be used to place text into a generated project
+ file verbatim. The <em class="Code">verbatim</em> syntax is as
+ follows:
+ </p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <blockquote>
- <p class="Code">}</p>
+ <p class="Code">
+ verbatim(&lt;project type&gt;,
+ &lt;location&gt;) {
+ </p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <li class="Body">When MPC is generating a project of type
- <em class="Code">&lt;project type&gt;</em> and encounters a
- <em class="Code">marker</em> in the template file (see <a href=
- "MakeProjectCreator.html#38037" class="XRef">Template File
- Keywords</a>) that matches the <em class=
+ <p class="Code">}</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ When MPC is generating a project of type
+ <em class="Code">&lt;project type&gt;</em> and encounters a
+ <em class="Code">marker</em> in the template file (see <a href=
+ "MakeProjectCreator.html#38037" class="XRef">
+ Template File
+ Keywords
+ </a>) that matches the <em class=
"Code">&lt;location&gt;</em> name, it will place the text found
- inside the construct directly into the generated project. If
- the text inside the construct requires that white space be
- preserved, each line must be enclosed in double quotes. The
- following <em class="Code">verbatim</em> example would result
- in <em class="Code">gnuace</em> generated projects having a
- rule at the bottom of the GNUmakefile where the <em class=
+ inside the construct directly into the generated project. If
+ the text inside the construct requires that white space be
+ preserved, each line must be enclosed in double quotes. The
+ following <em class="Code">verbatim</em> example would result
+ in <em class="Code">gnuace</em> generated projects having a
+ rule at the bottom of the GNUmakefile where the <em class=
"Code">all:</em> target depends on <em class=
- "Code">foo</em>.</li>
+ "Code">foo</em>.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
+
+ <p class="Code">verbatim(gnuace, bottom) {</p>
- <p class="Code">verbatim(gnuace, bottom) {</p>
+ <p class="Code">&nbsp;&nbsp;all: foo</p>
- <p class="Code">&nbsp;&nbsp;all: foo</p>
+ <p class="Code">}</p>
+ </blockquote>
+
+ </div>
+
+ <div>
+ <h6 class="Head5">Expand Clause</h6>
+
+
+ <p class="BodyNoLead">
+ The <em class="Code">expand</em> keyword
+ can be used to provide values for variable names enclosed
+ within <em class="Code">$()</em>. In the example below, we see
+ the name <em class="Code">VAR_NAME</em> inside the parenthesis.
+ Whenever MPC sees <em class="Code">$(VAR_NAME)</em> it will
+ attempt to replace it with values from the expansion list. MPC
+ will first try to replace it with the value of the environment
+ variable named <em class="Code">ENV_VAR</em>. If that
+ environment variable has a value, it will be used. Otherwise,
+ it will continue down the list until a suitable value is found.
+ In this example, the text <em class=
+ "Code">last_resort_value</em> will be used. MPC will leave the
+ <em class="Code">$()</em> value as it was in the event that no
+ value is found.
+ </p>
- <p class="Code">}</p>
- </li>
- </ul>
- </div>
+ <blockquote>
+
+ <p class="Code">expand(VAR_NAME) {</p>
- <div>
- <h6 class="Head5">Expand Clause</h6>
-
- <ul>
- <li class="BodyNoLead">The <em class="Code">expand</em> keyword
- can be used to provide values for variable names enclosed
- within <em class="Code">$()</em>. In the example below, we see
- the name <em class="Code">VAR_NAME</em> inside the parenthesis.
- Whenever MPC sees <em class="Code">$(VAR_NAME)</em> it will
- attempt to replace it with values from the expansion list. MPC
- will first try to replace it with the value of the environment
- variable named <em class="Code">ENV_VAR</em>. If that
- environment variable has a value, it will be used. Otherwise,
- it will continue down the list until a suitable value is found.
- In this example, the text <em class=
- "Code">last_resort_value</em> will be used. MPC will leave the
- <em class="Code">$()</em> value as it was in the event that no
- value is found.</li>
+ <p class="Code">&nbsp;&nbsp;$ENV_VAR</p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;last_resort_value</p>
- <p class="Code">expand(VAR_NAME) {</p>
+ <p class="Code">}</p>
+ </blockquote>
- <p class="Code">&nbsp;&nbsp;$ENV_VAR</p>
+ </div>
- <p class="Code">&nbsp;&nbsp;last_resort_value</p>
+ <div>
+ <h6 class="Head5">
+ <a name="projectSpecific">Specific Clause</a>
+ </h6>
- <p class="Code">}</p>
- </li>
- </ul>
- </div>
- <div>
- <h6 class="Head5"><a name="projectSpecific">Specific Clause</a></h6>
-
- <ul>
- <li class="BodyNoLead">The <em class="Code">specific</em>
- keyword can be used to define assignments that are specific to
- a particular project type or property specified in the
- parenthesis. This will allow platform or OS-specific values to
- be placed into a project. For example, on one platform you may
- want to link in a library named <em class="Code">qt-mt</em>,
- but on another you need to link in <em class=
- "Code">qt-mt230nc</em>.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="BodyNoLead">
+ The <em class="Code">specific</em>
+ keyword can be used to define assignments that are specific to
+ a particular project type or property specified in the
+ parenthesis. This will allow platform or OS-specific values to
+ be placed into a project. For example, on one platform you may
+ want to link in a library named <em class="Code">qt-mt</em>,
+ but on another you need to link in <em class=
+ "Code">qt-mt230nc</em>.
+ </p>
- <p class="Code">specific(prop:windows) {</p>
+ <blockquote>
- <p class="Code">&nbsp;&nbsp;lit_libs += qt-mt230nc</p>
- <p class="Code">} else {</p>
+ <p class="Code">specific(prop:windows) {</p>
- <p class="Code">&nbsp;&nbsp;lit_libs += qt-mt</p>
+ <p class="Code">&nbsp;&nbsp;lit_libs += qt-mt230nc</p>
- <p class="Code">}</p>
+ <p class="Code">} else {</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;lit_libs += qt-mt</p>
+
+ <p class="Code">}</p>
+
+
+ </blockquote>
- <li class="Body">If an else clause is provided, it is required
- to be on the same line as the closing curly brace. You may also
- negate the project type or property (using &rsquo;!&rsquo;)
- which will cause the specific to be evaluated for all types
- except the type specified.</li>
+ <p class="Body">
+ If an else clause is provided, it is required
+ to be on the same line as the closing curly brace. You may also
+ negate the project type or property (using &rsquo;!&rsquo;)
+ which will cause the specific to be evaluated for all types
+ except the type specified.
+ </p>
- <li class="Body">If a keyword used within a <em class=
+ <p class="Body">
+ If a keyword used within a <em class=
"Code">specific</em> section is not recognized as a valid MPC
- keyword, it is interpreted to be template value modifier. In
- this situation, this construct works exactly the same way as
- the <em class="Code">-value_template</em> command line option
- (see <a href="MakeProjectCreator.html#Command%20Line%20Options"
- class="XRef">Command Line Options</a>).</li>
-
- <a name="properties">
- <li class="Body">The following table shows which properties
- apply to which project types. The <em class="Code">static</em>
- property (not represented in the table) is set if the -static
- option is supplied when processing the project files.
- Additionally, a property that corresponds to the language
- will be set (e.g., cplusplus, csharp, java, vb).</li>
-
- <li class="Body">
- <h6 class="NumberedTableTitle"><a name=
- "Property Table"></a>Property Table</h6>
-
- <table border="1" summary="Property Table">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Project Type</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">borland</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">make</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">microsoft</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">windows</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">automake</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">bcb2007</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">bcb2009</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">bds4</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">bmake</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">cc</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">em3</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">ghs</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Depends</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">make</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">nmake</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc6</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc7</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc71</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc8</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc9</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vc10</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">wix</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">&nbsp;</p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Yes</p>
- </td>
- </tr>
- </table>
- </li>
+ keyword, it is interpreted to be template value modifier. In
+ this situation, this construct works exactly the same way as
+ the <em class="Code">-value_template</em> command line option
+ (see <a href="MakeProjectCreator.html#Command%20Line%20Options"
+ class="XRef">Command Line Options</a>).
+ </p>
+
+ <a name="properties">
+ <p class="Body">
+ The following table shows which properties
+ apply to which project types. The <em class="Code">static</em>
+ property (not represented in the table) is set if the -static
+ option is supplied when processing the project files.
+ Additionally, a property that corresponds to the language
+ will be set (e.g., cplusplus, csharp, java, vb).
+ </p>
+
+ <p class="Body">
+ <h6 class="NumberedTableTitle">
+ <a name=
+ "Property_Table"></a>Property Table
+ </h6>
+
+ <p class="Body">
+ <table border="1" summary="Property Table">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Project Type</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">borland</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">make</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">microsoft</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">windows</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">automake</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">bcb2007</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">bcb2009</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">bds4</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">bmake</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">cc</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">em3</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">ghs</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Depends</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">make</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">nmake</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc6</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc7</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc71</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc8</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc9</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vc10</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">wix</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">&nbsp;</p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Yes</p>
+ </td>
+ </tr>
+ </table>
+ </p>
+ </p>
+
+ <p class="Body">
+ The ghs project type can be used on both
+ Windows and UNIX. The windows property will be active if the
+ <em class="Code">MPC_GHS_UNIX</em> environment variable is not
+ set during project generation.
+ </p>
- <li class="Body">The ghs project type can be used on both
- Windows and UNIX. The windows property will be active if the
- <em class="Code">MPC_GHS_UNIX</em> environment variable is not
- set during project generation.</li>
- </ul>
- </div>
+ </div>
- <div>
- <h6 class="Head5">Conditional Clause</h6>
+ <div>
+ <h6 class="Head5">Conditional Clause</h6>
- <ul>
- <li class="Body">This scope allows addition of source files
- conditionally based on a particular project type or property
- (see the <a href="#Property%20Table" class="XRef">property
- table</a>). The syntax is as follows:</li>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Body">
+ This scope allows addition of source files
+ conditionally based on a particular project type or property
+ (see the <a href="#Property_Table" class="XRef">
+ property
+ table
+ </a>). The syntax is as follows:
+ </p>
- <p class="Code">conditional(&lt;project type|property&gt; [,
- &lt;project type|property&gt; ...]) {</p>
+ <blockquote>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;source1.cpp</p>
+ <p class="Code">
+ conditional(&lt;project type|property&gt; [,
+ &lt;project type|property&gt; ...]) {
+ </p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <p class="Code">&nbsp;&nbsp;source1.cpp</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">}</p>
- <p class="Code">conditional(&lt;project type|property&gt; [,
- &lt;project type|property&gt; ...]) {</p>
- <p class="Code">&nbsp;&nbsp;source1.cpp</p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <p class="Code">
+ conditional(&lt;project type|property&gt; [,
+ &lt;project type|property&gt; ...]) {
+ </p>
- <p class="Code">} else {</p>
+ <p class="Code">&nbsp;&nbsp;source1.cpp</p>
- <p class="Code">&nbsp;&nbsp;source2.cpp</p>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <p class="Code">} else {</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;source2.cpp</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <li class="Body">If the else is provided, it is required to be
- on the same line as the closing curly brace. You may also
- negate the project type (using &rsquo;!&rsquo;) which will
- cause the conditional to be evaluated for all types except the
- type specified.</li>
- </ul>
- </div>
+ <p class="Code">}</p>
- <div>
- <a name="Custom Types and Build Rules"></a>
- <h6 class="Head5">Custom Types and Build Rules</h6>
+ </blockquote>
- <ul>
- <li class="BodyNoLead">MPC allows you to define your own custom
- file types to support a variety of custom build rules. Below is
- an example of a custom definition.</li>
+ <p class="Body">
+ If the else is provided, it is required to be
+ on the same line as the closing curly brace. You may also
+ negate the project type (using &rsquo;!&rsquo;) which will
+ cause the conditional to be evaluated for all types except the
+ type specified.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ </div>
- <p class="Code">project {</p>
+ <div>
+ <a name="Custom_Types_and_Build_Rules"></a>
- <p class="Code">&nbsp;&nbsp;Define_Custom(MOC) {</p>
+ <h6 class="Head5">Custom Types and Build Rules</h6>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;automatic = 0</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;command =
- $(QTDIR)/bin/moc</p>
+ <p class="Body">
+ MPC allows you to define your own custom
+ file types to support a variety of custom build rules. Below is
+ an example of a custom definition.
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;output_option =
- -o</p>
+ <blockquote>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;inputext = .h</p>
+ <p class="Code">project {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;pre_extension =
- _moc</p>
+ <p class="Code">&nbsp;&nbsp;Define_Custom(MOC) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;source_outputext =
- .cpp</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;automatic = 0</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;keyword mocflags =
- commandflags</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;command =
+ $(QTDIR)/bin/moc
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;output_option =
+ -o
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;inputext = .h</p>
- <p class="Code">&nbsp;&nbsp;// Custom Component</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;pre_extension =
+ _moc
+ </p>
- <p class="Code">&nbsp;&nbsp;MOC_Files {</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;source_outputext =
+ .cpp
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;QtReactor.h</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;keyword mocflags =
+ commandflags
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;Source_Files {</p>
+ <p class="Code">&nbsp;&nbsp;// Custom Component</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;QtReactor_moc.cpp</p>
+ <p class="Code">&nbsp;&nbsp;MOC_Files {</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;QtReactor.h</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
- <li class="Body">The above example defines a custom file type,
- &ldquo;<em class="Code">MOC</em> &rdquo;, that describes basic
- information about how to process the input files and what
- output files are created. Once the custom file type is defined,
- <em class="Code">MOC_Files</em> can be used to specify the
- input files for this new file type.</li>
-
- <li class="Body">Define_Custom definitions may use single
- inheritance. This is useful for creating aliased names:
- <p class="Code">Define_Custom(QtMOC) : MOC {</p>
- <p class="Code">}</p>
- </li>
+ <p class="Code">&nbsp;&nbsp;Source_Files {</p>
- <li class="Body">The following table contains the keywords that
- can be used within the scope of <em class=
- "Code">Define_Custom</em>.</li>
-
- <li style="list-style: none">
- <a name="32899"></a>
-
- <h6 class="NumberedTableTitle">Define_Custom Keywords</h6>
-
- <table border="1" summary="Define_Custom Keywords">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Keyword</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">automatic_in</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If set to 1, then attempt to
- automatically determine which files belong to the set
- of input files for the custom type. If set to 0, then
- no files are automatically added to the input
- files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">automatic_out</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If set to 1, then attempt to
- automatically determine which generated files belong to
- the set of components (<em class=
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;QtReactor_moc.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;}</p>
+
+ <p class="Code">}</p>
+
+ <p class="Code">&nbsp;</p>
+ </blockquote>
+
+ <p class="Body">
+ The above example defines a custom file type,
+ &ldquo;<em class="Code">MOC</em> &rdquo;, that describes basic
+ information about how to process the input files and what
+ output files are created. Once the custom file type is defined,
+ <em class="Code">MOC_Files</em> can be used to specify the
+ input files for this new file type.
+ </p>
+
+ <p class="Body">
+ Define_Custom definitions may use single
+ inheritance. This is useful for creating aliased names:
+ </p>
+ <blockquote>
+ <p class="Code">Define_Custom(QtMOC) : MOC {</p>
+ <p class="Code">}</p>
+ </blockquote>
+
+ <p class="Body">
+ The following table contains the keywords that
+ can be used within the scope of <em class=
+ "Code">Define_Custom</em>.
+ </p>
+
+ <p style="list-style: none">
+ <a name="32899"></a>
+
+ <h6 class="NumberedTableTitle">Define_Custom Keywords</h6>
+
+ <p class="Body">
+ <table border="1" summary="Define_Custom Keywords">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Keyword</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">automatic_in</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If set to 1, then attempt to
+ automatically determine which files belong to the set
+ of input files for the custom type. If set to 0, then
+ no files are automatically added to the input
+ files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">automatic_out</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If set to 1, then attempt to
+ automatically determine which generated files belong to
+ the set of components (<em class=
"Code">Source_Files</em>, <em class=
"Code">Inline_Files</em> , <em class=
"Code">Header_Files</em>, <em class=
"Code">Template_Files</em>, <em class=
"Code">Resource_Files</em> and <em class=
"Code">Documentation_Files</em>) based on type files
- that the command generates. If omitted, then
- automatic_out is assumed to be 1.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The name of the command that should
- be used to process the input files for the custom
- type.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">commandflags</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Any options that should be passed
- to the command.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dependent</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is given a value, then a
- dependency upon that value will be given to all of the
- generated files. The default for this is unset and no
- dependency will be generated.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dependent_libs</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is given a value, then a dependency upon that
- library value will be given to all of the generated files.
- The format for this entry should be the basename for the
- library (no library prefix, postfix, or extension)
- preceded by any relative or absolute path to the library.
- The typical use for this would be so that a project is
- rebuilt when a library needs to be rebuilt for its
- dependent executable. The default for this is unset and no
- dependency will be generated.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- input file extensions that belong to the command.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">keyword
- &lt;name&gt;</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a special assignment that
- allows the user to map &lt;name&gt; into the project
- level namespace. The value (if any) that is assigned to
- this construct must be one of the keywords that can be
- used within a Define_Custom clause. The result of this
- assignment is the ability modify the value of keywords
- that are normally only accessible within the scope of a
- custom component (e.g. <em class="Code">command</em>,
- <em class="Code">commandflags</em>, etc.).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">libpath</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If the command requires a library
- that is not in the normal library search path, this
- keyword can be used to ensure that the command is able
- to find the library that it needs to run.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">output_option</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If the command takes an option to
- specify a single file output name, then set it here.
- Otherwise, this should be omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">output_follows_input</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This setting defaults to 1 and
- indicates that output files from the custom command
- will end up in the same directory as the input files.
- If this is set to 0, it is assumed that the output
- files will go into the same directory as the .mpc
- file.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pch_postrule</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If this is set to 1, then a rule
- will be added to the custom rule that will modify the
- source output files to include the precompiled header
- file.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">postcommand</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This allows users to create
- arbitrary commands that will be run after the main
- command is run to process the custom input files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If the command produces multiple
- files of the same extension, this comma separated list
- can be used to specify them. For example, <em class=
+ that the command generates. If omitted, then
+ automatic_out is assumed to be 1.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The name of the command that should
+ be used to process the input files for the custom
+ type.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">commandflags</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Any options that should be passed
+ to the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dependent</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is given a value, then a
+ dependency upon that value will be given to all of the
+ generated files. The default for this is unset and no
+ dependency will be generated.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dependent_libs</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is given a value, then a dependency upon that
+ library value will be given to all of the generated files.
+ The format for this entry should be the basename for the
+ library (no library prefix, postfix, or extension)
+ preceded by any relative or absolute path to the library.
+ The typical use for this would be so that a project is
+ rebuilt when a library needs to be rebuilt for its
+ dependent executable. The default for this is unset and no
+ dependency will be generated.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ input file extensions that belong to the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">
+ keyword
+ &lt;name&gt;
+ </em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a special assignment that
+ allows the user to map &lt;name&gt; into the project
+ level namespace. The value (if any) that is assigned to
+ this construct must be one of the keywords that can be
+ used within a Define_Custom clause. The result of this
+ assignment is the ability modify the value of keywords
+ that are normally only accessible within the scope of a
+ custom component (e.g. <em class="Code">command</em>,
+ <em class="Code">commandflags</em>, etc.).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">libpath</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If the command requires a library
+ that is not in the normal library search path, this
+ keyword can be used to ensure that the command is able
+ to find the library that it needs to run.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">output_option</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If the command takes an option to
+ specify a single file output name, then set it here.
+ Otherwise, this should be omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">output_follows_input</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This setting defaults to 1 and
+ indicates that output files from the custom command
+ will end up in the same directory as the input files.
+ If this is set to 0, it is assumed that the output
+ files will go into the same directory as the .mpc
+ file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pch_postrule</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If this is set to 1, then a rule
+ will be added to the custom rule that will modify the
+ source output files to include the precompiled header
+ file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">postcommand</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This allows users to create
+ arbitrary commands that will be run after the main
+ command is run to process the custom input files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If the command produces multiple
+ files of the same extension, this comma separated list
+ can be used to specify them. For example, <em class=
"Code">tao_idl</em> creates two types of files per
- extension (<em class="Code">C.h</em>, <em class=
+ extension (<em class="Code">C.h</em>, <em class=
"Code">S.h</em>, <em class="Code">C.cpp</em>,
- <em class="Code">S.cpp</em>, etc.) This applies to all
- extension types.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to source files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inline_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to inline files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">header_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to header files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">template_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to template files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">resource_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to resource files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">documentation_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to documentation files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">generic_pre_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_extension
- except that it only applies to generic files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The syntax for this is the same as
- <em class="Code">pre_extension</em>, but the values
- specified are prepended to the file name instead of the
- extension. This applies to all extension types.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to source files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inline_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to inline files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">header_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to header files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">template_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to template files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">resource_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to resource files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">documentation_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to documentation files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">generic_pre_filename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_filename
- except that it only applies to generic files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The syntax for this is the same as
- <em class="Code">pre_filename</em>, but the value
- specified is prepended to the directory portion of the
- file name instead of the file name itself. If a
- separate directory is desired, the <em class=
+ <em class="Code">S.cpp</em>, etc.) This applies to all
+ extension types.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to source files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inline_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to inline files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">header_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to header files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">template_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to template files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">resource_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to resource files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">documentation_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to documentation files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">generic_pre_extension</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_extension
+ except that it only applies to generic files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The syntax for this is the same as
+ <em class="Code">pre_extension</em>, but the values
+ specified are prepended to the file name instead of the
+ extension. This applies to all extension types.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to source files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inline_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to inline files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">header_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to header files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">template_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to template files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">resource_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to resource files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">documentation_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to documentation files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">generic_pre_filename</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_filename
+ except that it only applies to generic files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The syntax for this is the same as
+ <em class="Code">pre_filename</em>, but the value
+ specified is prepended to the directory portion of the
+ file name instead of the file name itself. If a
+ separate directory is desired, the <em class=
"Code">pre_dirname</em> setting should end in a
- slash.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to source files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inline_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to inline files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">header_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to header files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">template_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to template files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">resource_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to resource files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">documentation_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to documentation files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">generic_pre_dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is the same as pre_dirname
- except that it only applies to generic files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible source file output extensions. If the command
- does not produce source files, then this can be
- omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inline_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible inline file output extensions. If the command
- does not produce inline files, then this can be
- omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">header_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible header file output extensions. If the command
- does not produce header files, then this can be
- omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">template_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible template file output extensions. If the
- command does not produce template files, then this can
- be omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">resource_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible resource file output extensions. If the
- command does not produce resource files, then this can
- be omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">documentation_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is a comma separated list of
- possible documentation file output extensions. If the
- command does not produce documentation files, then this
- can be omitted.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">generic_outputext</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">If the command does not generate
- any of the other output types listed above, then the
- extensions should be listed under this.</p>
- </td>
- </tr>
- </table>
- </li>
-
- <li class="Body">There is a special interaction between custom
- components and the source, header and inline components. If a
- <em class="Code">custom</em> definition is set to be
- &ldquo;automatic&rdquo; and custom component files are present
- but not specified, the default custom generated names are added
- to the source, header and inline component lists unless those
- names are already listed (or partially listed) in those
- component lists. See <a href=
- "MakeProjectCreator.html#Custom%20Types%20and%20Build%20Rules"
+ slash.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to source files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inline_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to inline files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">header_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to header files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">template_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to template files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">resource_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to resource files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">documentation_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to documentation files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">generic_pre_dirname</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is the same as pre_dirname
+ except that it only applies to generic files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible source file output extensions. If the command
+ does not produce source files, then this can be
+ omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inline_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible inline file output extensions. If the command
+ does not produce inline files, then this can be
+ omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">header_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible header file output extensions. If the command
+ does not produce header files, then this can be
+ omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">template_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible template file output extensions. If the
+ command does not produce template files, then this can
+ be omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">resource_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible resource file output extensions. If the
+ command does not produce resource files, then this can
+ be omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">documentation_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This is a comma separated list of
+ possible documentation file output extensions. If the
+ command does not produce documentation files, then this
+ can be omitted.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">generic_outputext</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ If the command does not generate
+ any of the other output types listed above, then the
+ extensions should be listed under this.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+ </p>
+
+ <p class="Body">
+ There is a special interaction between custom
+ components and the source, header and inline components. If a
+ <em class="Code">custom</em> definition is set to be
+ &ldquo;automatic&rdquo; and custom component files are present
+ but not specified, the default custom generated names are added
+ to the source, header and inline component lists unless those
+ names are already listed (or partially listed) in those
+ component lists. See <a href=
+ "MakeProjectCreator.html#Custom_Types_and_Build_Rules"
class="XRef">Custom Types and Build Rules</a> for more
- information about defining your own custom type.</li>
-
- <li class="Body">Particular output extensions for custom build
- types are not required. However, at least one output extension
- type is required for MPC to generate a target. Your command
- does not necessarily have to generate output, but an extension
- type is required if you want the input file to be processed
- during the project compilation.</li>
-
- <li class="Body">If the custom output can not be represented
- with the above output extension keywords (*_outputext) and you
- have knowledge of the output files <em class="Emphasis">a
- priori</em>, you can represent them with the <em class=
- "Code">&gt;&gt;</em> construct.</li>
-
- <li class="Body">Below is an example that demonstrates the use
- of <em class="Code">&gt;&gt;</em>. The command takes an input
- file name of foo.prp and produces two files that have
- completely unrelated filenames, <em class="Code">hello.h</em>
- and <em class="Code">hello.cpp</em>.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">project {</p>
+ information about defining your own custom type.
+ </p>
+
+ <p class="Body">
+ Particular output extensions for custom build
+ types are not required. However, at least one output extension
+ type is required for MPC to generate a target. Your command
+ does not necessarily have to generate output, but an extension
+ type is required if you want the input file to be processed
+ during the project compilation.
+ </p>
+
+ <p class="Body">
+ If the custom output can not be represented
+ with the above output extension keywords (*_outputext) and you
+ have knowledge of the output files <em class="Emphasis">
+ a
+ priori
+ </em>, you can represent them with the <em class=
+ "Code">&gt;&gt;</em> construct.
+ </p>
+
+ <p class="Body">
+ Below is an example that demonstrates the use
+ of <em class="Code">&gt;&gt;</em>. The command takes an input
+ file name of foo.prp and produces two files that have
+ completely unrelated filenames, <em class="Code">hello.h</em>
+ and <em class="Code">hello.cpp</em>.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">project {</p>
+
+ <p class="Code">&nbsp;&nbsp;Define_Custom(Quogen) {</p>
+
+ <p class="Code">&nbsp;&nbsp;automatic = 0</p>
+
+ <p class="Code">&nbsp;&nbsp;command = perl quogen.pl</p>
- <p class="Code">&nbsp;&nbsp;Define_Custom(Quogen) {</p>
-
- <p class="Code">&nbsp;&nbsp;automatic = 0</p>
-
- <p class="Code">&nbsp;&nbsp;command = perl quogen.pl</p>
+ <p class="Code">
+ &nbsp;&nbsp;commandflags = --debuglevel=1
+ --language=c++ \
+ </p>
- <p class="Code">&nbsp;&nbsp;commandflags = --debuglevel=1
- --language=c++ \</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kernel_language=c++
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kernel_language=c++</p>
+ <p class="Code">&nbsp;&nbsp;inputext = .prp</p>
- <p class="Code">&nbsp;&nbsp;inputext = .prp</p>
+ <p class="Code">
+ &nbsp;&nbsp;keyword quogenflags =
+ commandflags
+ </p>
- <p class="Code">&nbsp;&nbsp;keyword quogenflags =
- commandflags</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;Quogen_Files {</p>
- <p class="Code">&nbsp;&nbsp;Quogen_Files {</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;foo.prp &gt;&gt;
+ hello.h hello.cpp
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;foo.prp &gt;&gt;
- hello.h hello.cpp</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;&nbsp;Source_Files {</p>
- <p class="Code">&nbsp;&nbsp;Source_Files {</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;hello.cpp</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;hello.cpp</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">}</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Body">
+ You can use the <em class="Code">&lt;&lt;</em>
+ construct to represent dependencies for specific custom input
+ file. For instance, in the above example, assume that foo.prp
+ depends upon foo.in, we would represent this by adding
+ <em class="Code">&lt;&lt;</em> foo.in as shown below.
+ </p>
- <li class="Body">You can use the <em class="Code">&lt;&lt;</em>
- construct to represent dependencies for specific custom input
- file. For instance, in the above example, assume that foo.prp
- depends upon foo.in, we would represent this by adding
- <em class="Code">&lt;&lt;</em> foo.in as shown below.</li>
+ <blockquote>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Code">Quogen_Files {</p>
- <p class="Code">Quogen_Files {</p>
+ <p class="Code">
+ &nbsp;&nbsp;foo.prp &gt;&gt; hello.h
+ hello.cpp &lt;&lt; foo.in
+ </p>
- <p class="Code">&nbsp;&nbsp;foo.prp &gt;&gt; hello.h
- hello.cpp &lt;&lt; foo.in</p>
+ <p class="Code">}</p>
- <p class="Code">}</p>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Body">
+ An additional construct can be used within the
+ scope of a <em class="Code">Define_Custom</em>. This construct
+ is called <em class="Code">optional</em>, and can be used to
+ represent optional custom command output that is dependent upon
+ particular command line parameters passed to the custom
+ command.
+ </p>
- <li class="Body">An additional construct can be used within the
- scope of a <em class="Code">Define_Custom</em>. This construct
- is called <em class="Code">optional</em>, and can be used to
- represent optional custom command output that is dependent upon
- particular command line parameters passed to the custom
- command.</li>
+ <blockquote>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Code">project {</p>
- <p class="Code">project {</p>
+ <p class="Code">&nbsp;&nbsp;Define_Custom(TEST) {</p>
- <p class="Code">&nbsp;&nbsp;Define_Custom(TEST) {</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;optional(keyword)
- {</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;optional(keyword)
+ {
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_keyword(option) +=
- value [, value]</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_keyword(option) +=
+ value [, value]
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">}</p>
- </li>
+ <p class="Code">}</p>
+ </blockquote>
- <li class="Body">In the above fragment, <em class=
+ <p class="Body">
+ In the above fragment, <em class=
"Code">keyword</em> can be any of the <em class=
"Code">pre_extension</em>, <em class="Code">pre_filename</em>
- keywords or any of the keywords that end in <em class=
+ keywords or any of the keywords that end in <em class=
"Code">_outputext</em>. The <em class="Code">flag_keyword</em>
- can be any of the custom definition keywords, however only
- <em class="Code">commandflags</em> has any functional value.
- The <em class="Code">flag_keyword</em> value is searched for
- the <em class="Code">option</em> value contained inside the
- parenthesis. If it is found the <em class="Code">value</em> or
- <em class="Code">values</em> after the += are added to the list
- specified by <em class="Code">keyword</em>. This can also be
- negated by prefixing the <em class="Code">option</em> with an
- exclamation point (!).</li>
-
- <li class="Body">The example below shows how the <em class=
+ can be any of the custom definition keywords, however only
+ <em class="Code">commandflags</em> has any functional value.
+ The <em class="Code">flag_keyword</em> value is searched for
+ the <em class="Code">option</em> value contained inside the
+ parenthesis. If it is found the <em class="Code">value</em> or
+ <em class="Code">values</em> after the += are added to the list
+ specified by <em class="Code">keyword</em>. This can also be
+ negated by prefixing the <em class="Code">option</em> with an
+ exclamation point (!).
+ </p>
+
+ <p class="Body">
+ The example below shows how the <em class=
"Code">optional</em> construct is used by the custom definition
- for the <em class="Code">tao_idl</em> command (see <em class=
+ for the <em class="Code">tao_idl</em> command (see <em class=
"Code">ACE_wrappers/TAO/MPC/config/taoidldefaults.mpb</em> ).
- The <em class="Code">-GA</em> option causes <em class=
+ The <em class="Code">-GA</em> option causes <em class=
"Code">tao_idl</em> to generate an additional source file
- (based on the idl file name) with an <em class=
+ (based on the idl file name) with an <em class=
"Code">A.cpp</em> extension. The <em class="Code">-Sc</em>
- option causes <em class="Code">tao_idl</em> to suppress the
- generation of <em class="Code">S_T</em> related files.</li>
+ option causes <em class="Code">tao_idl</em> to suppress the
+ generation of <em class="Code">S_T</em> related files.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">Define_Custom(IDL) {</p>
+ <p class="Code">Define_Custom(IDL) {</p>
- <p class="Code">&nbsp;&nbsp;...</p>
+ <p class="Code">&nbsp;&nbsp;...</p>
- <p class="Code">&nbsp;&nbsp;inputext = .idl</p>
+ <p class="Code">&nbsp;&nbsp;inputext = .idl</p>
- <p class="Code">&nbsp;&nbsp;source_pre_extension = C, S</p>
+ <p class="Code">&nbsp;&nbsp;source_pre_extension = C, S</p>
- <p class="Code">&nbsp;&nbsp;header_pre_extension = C, S</p>
+ <p class="Code">&nbsp;&nbsp;header_pre_extension = C, S</p>
- <p class="Code">&nbsp;&nbsp;inline_pre_extension = C, S</p>
+ <p class="Code">&nbsp;&nbsp;inline_pre_extension = C, S</p>
- <p class="Code">&nbsp;&nbsp;source_outputext = .cpp, .cxx,
- .cc, .C</p>
+ <p class="Code">
+ &nbsp;&nbsp;source_outputext = .cpp, .cxx,
+ .cc, .C
+ </p>
- <p class="Code">&nbsp;&nbsp;header_outputext = .h, .hpp,
- .hxx, .hh</p>
+ <p class="Code">
+ &nbsp;&nbsp;header_outputext = .h, .hpp,
+ .hxx, .hh
+ </p>
- <p class="Code">&nbsp;&nbsp;inline_outputext = .inl, .i</p>
+ <p class="Code">&nbsp;&nbsp;inline_outputext = .inl, .i</p>
- <p class="Code">&nbsp;&nbsp;keyword idlflags =
- commandflags</p>
+ <p class="Code">
+ &nbsp;&nbsp;keyword idlflags =
+ commandflags
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;optional(source_pre_extension)
- {</p>
+ <p class="Code">
+ &nbsp;&nbsp;optional(source_pre_extension)
+ {
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;commandflags(-GA) +=
- A</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;commandflags(-GA) +=
+ A
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;optional(template_outputext)
- {</p>
+ <p class="Code">
+ &nbsp;&nbsp;optional(template_outputext)
+ {
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
- S_T.cpp, S_T.cxx, S_T.cc, S_T.C</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
+ S_T.cpp, S_T.cxx, S_T.cc, S_T.C
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;optional(header_pre_extension)
- {</p>
+ <p class="Code">
+ &nbsp;&nbsp;optional(header_pre_extension)
+ {
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
- S_T</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
+ S_T
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;optional(inline_pre_extension)
- {</p>
+ <p class="Code">
+ &nbsp;&nbsp;optional(inline_pre_extension)
+ {
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
- S_T</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;commandflags(!-Sc) +=
+ S_T
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <li class="Body">For custom file types, there are a few
- keywords that can be used within the custom file type component
- lists: <em class="Code">command</em>, <em class=
+ <p class="Body">
+ For custom file types, there are a few
+ keywords that can be used within the custom file type component
+ lists: <em class="Code">command</em>, <em class=
"Code">commandflags</em>, <em class="Code">dependent</em>,
- <em class="Code">dependent_libs</em>, <em class="Code">gendir</em>,
- <em class="Code">postcommand</em>, and <em class=
- "Code">recurse</em>.</li>
-
- <li class="Body">The <em class="Code">recurse</em> keyword
- works as described in <a href="MakeProjectCreator.html#82186"
- class="XRef">Assignment Keywords</a>.</li>
-
- <li class="Body">The <em class="Code">command</em>, <em class=
+ <em class="Code">dependent_libs</em>, <em class="Code">gendir</em>,
+ <em class="Code">postcommand</em>, and <em class=
+ "Code">recurse</em>.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">recurse</em> keyword
+ works as described in <a href="MakeProjectCreator.html#82186"
+ class="XRef">Assignment Keywords</a>.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">command</em>, <em class=
"Code">commandflags</em>, <em class="Code">dependent</em>,
- <em class="Code">dependent_libs</em> and
- <em class="Code">postcommand</em> keywords can be used to
- augment or override the value defined in the <em class=
- "Code">Define_Custom</em> section.</li>
+ <em class="Code">dependent_libs</em> and
+ <em class="Code">postcommand</em> keywords can be used to
+ augment or override the value defined in the <em class=
+ "Code">Define_Custom</em> section.
+ </p>
- <li class="Body">The <em class="Code">gendir</em> keyword can
- be used (only if <em class="Code">output_option</em> is set in
- <em class="Code">Define_Custom</em> ) to specify the directory
- in which the generated output will go. Here is an example:</li>
+ <p class="Body">
+ The <em class="Code">gendir</em> keyword can
+ be used (only if <em class="Code">output_option</em> is set in
+ <em class="Code">Define_Custom</em> ) to specify the directory
+ in which the generated output will go. Here is an example:
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">MOC_Files {</p>
+ <p class="Code">MOC_Files {</p>
- <p class="Code">&nbsp;&nbsp;commandflags += -nw</p>
+ <p class="Code">&nbsp;&nbsp;commandflags += -nw</p>
- <p class="Code">&nbsp;&nbsp;gendir = moc_generated</p>
+ <p class="Code">&nbsp;&nbsp;gendir = moc_generated</p>
- <p class="Code">&nbsp;&nbsp;QtReactor.h</p>
+ <p class="Code">&nbsp;&nbsp;QtReactor.h</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">Source_Files {</p>
+ <p class="Code">Source_Files {</p>
- <p class="Code">
- &nbsp;&nbsp;moc_generated/QtReactor_moc.cpp</p>
+ <p class="Code">
+ &nbsp;&nbsp;moc_generated/QtReactor_moc.cpp
+ </p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
- </li>
- <li class="Body">In the above example, the <em class=
+ </blockquote>
+
+ <p class="Body">
+ In the above example, the <em class=
"Code">-nw</em> option is added to <em class=
"Code">commandflags</em> and the generated file (<em class=
"Code">QtReactor_moc.cpp</em> ) is placed in the <em class=
"Code">moc_generated</em> directory. If the <em class=
"Code">MOC</em> custom definition did not have an <em class=
"Code">output_option</em> setting, then options would need to
- be added to <em class="Code">commandflags</em> or a <em class=
+ be added to <em class="Code">commandflags</em> or a <em class=
"Code">postcommand</em> would need to be defined to ensure that
- the output actually went into the <em class=
- "Code">moc_generated</em> directory.</li>
- </ul>
+ the output actually went into the <em class=
+ "Code">moc_generated</em> directory.
+ </p>
- <div>
- <h6 class="Head6">Modify_Custom</h6>
- <ul>
- <li class="Body">An existing <em class=
+ <div>
+ <h6 class="Head6">Modify_Custom</h6>
+
+
+ <p class="Body">
+ An existing <em class=
"Code">Define_Custom</em> section can be modified by using
- <em class="Code">Modify_Custom</em>. The syntax of the body
- is identical to that of a <em class=
+ <em class="Code">Modify_Custom</em>. The syntax of the body
+ is identical to that of a <em class=
"Code">Define_Custom</em>. The example below shows a
- modification to the TAO IDL defaults found in <em class=
+ modification to the TAO IDL defaults found in <em class=
"Code">taoidldefaults.mpb</em> of the TAO+ACE distribution.
- Everything provided by the <em class=
+ Everything provided by the <em class=
"Code">Define_Custom(IDL)</em> remains unchanged except for
- the values set within the <em class=
- "Code">Modify_Custom(IDL).</em></li>
+ the values set within the <em class=
+ "Code">Modify_Custom(IDL).</em>
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">project: taoidldefaults {</p>
+ <p class="Code">project: taoidldefaults {</p>
- <p class="Code">&nbsp;&nbsp;specific(!automake) {</p>
+ <p class="Code">&nbsp;&nbsp;specific(!automake) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;tao_idlflags += -Sc
- -hs _s.h -si _s.i -ss _s.cpp -hc .h -ci .i -cs .cpp</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;tao_idlflags += -Sc
+ -hs _s.h -si _s.i -ss _s.cpp -hc .h -ci .i -cs .cpp
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;// This allows "make idl_stubs"
- to work</p>
+ <p class="Code">
+ &nbsp;&nbsp;// This allows "make idl_stubs"
+ to work
+ </p>
- <p class="Code">&nbsp;&nbsp;verbatim(gnuace, macros) {</p>
+ <p class="Code">&nbsp;&nbsp;verbatim(gnuace, macros) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_HDR_EXT
- ?= .h</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_HDR_EXT
+ ?= .h
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_INL_EXT
- ?= .i</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_INL_EXT
+ ?= .i
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_SRC_EXT
- ?= .cpp</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_CLIENT_SRC_EXT
+ ?= .cpp
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_HDR_EXT
- ?= _s.h</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_HDR_EXT
+ ?= _s.h
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_INL_EXT
- ?= _s.i</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_INL_EXT
+ ?= _s.i
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_SRC_EXT
- ?= _s.cpp</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;IDL_SERVER_SRC_EXT
+ ?= _s.cpp
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
+
+ <p class="Code">&nbsp;&nbsp;Modify_Custom(IDL) {</p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;source_pre_extension = , _s
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;header_pre_extension = , _s
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;inline_pre_extension = , _s
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;inline_outputext
+ &nbsp;&nbsp;&nbsp;&nbsp;= .i
+ </p>
+
+ <p class="Code">&nbsp;&nbsp;}</p>
+
+ <p class="Code">}</p>
+ <blockquote>
+ </ul>
+ </div>
+
+ <div>
+ <h6 class="Head6">Custom Post Command</h6>
+
+
+ <p class="BodyNoLead">
+ When defining a <em class=
+ "Code">postcommand</em> as part of a <em class=
+ "Code">Define_Custom</em>, a few pseudo template variables
+ are available to provide some flexibility. The following
+ table shows the pseudo template variables that can be
+ accessed only from the <em class="Code">postcommand</em>.
+ Please note that <em class="Code">&lt;%</em> and <em class=
+ "Code">%&gt;</em> are part of the syntax.
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ Post Command Pseudo
+ Variables
+ </h6>
+
+ <table border="1" summary="Post Command Pseudo Variables">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Variable</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The input file to the
+ command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input_basename%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The basename of the input file to
+ the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input_dirname%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The directory name of the input
+ file to the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The input file to the command
+ with the extension stripped off.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input_ext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This gives the file extension of
+ the input file (if there is one).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file created by the
+ original command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output_basename%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The basename of the output file
+ to the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output_dirname%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The directory name of the output
+ file to the command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file created by the
+ original command with the extension stripped off.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output_ext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This gives the file extension of
+ the output file (if there is one).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="2">
+ <p class="TblCode">
+ The output file can be referenced
+ as a generic output file, or it can be referenced as
+ a component file using one of the following
+ variables. If it does not match the specific type the
+ value will be empty.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%documentation_file%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it is a
+ documentation file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%header_file%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it has a
+ header file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%inline_file%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it has an
+ inline file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%resource_file%&gt;</em> (<em class=
+ "TableCode">&lt;%resx_file%&gt;</em> for C# and
+ VB)
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it has a
+ resource file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%source_file%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it has a
+ source file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%template_file%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file if it is a
+ template file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%documentation_file_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it is a documentation file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%header_file_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it has a header file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%inline_file_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it has an inline file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%resource_file_noext%&gt;</em>
+ (<em class="TableCode">&lt;%resx_file_noext%&gt;</em>
+ for C# and VB)
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it has a resource file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%source_file_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it has a source file extension.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%template_file_noext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output file without an
+ extension if it is a template file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="2">
+ <p class="TblCode">
+ The extensions of the input and
+ output files are also available as pseudo
+ variables.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%input_ext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The extension of the input file
+ (if it has one).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%output_ext%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The extension of the output file
+ (if it has one).
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+
+
+
+ <p class="Body">
+ The following table describes the pseudo
+ template variables that can be used in the <em class=
+ "Code">command</em>, <em class="Code">commandflags</em>,
+ <em class="Code">dependent</em>, <em class=
+ "Code">output_option</em> and <em class=
+ "Code">postcommand</em> settings.
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ <a name=
+ "Common_Pseudo_Variables"></a>Common Pseudo Variables
+ </h6>
+
+ <table border="1" summary="Common Pseudo Variables">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Variable</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%and%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform and project
+ non-specific representation of a command conditional
+ and.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%cat%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to print a file to the terminal.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%cmdsep%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A project and platform
+ non-specific command separator which always runs
+ right-hand side of the command. For example, in the
+ following psuedo commmand string, both the <em class=
+ "Code">&lt;%cat%&gt;</em> and <em class=
+ "Code">&lt;%mv%&gt;</em> commands would be run.
+ <em class="Code">
+ &lt;%cat%&gt; &lt;%source_file%&gt;
+ &lt;%gt%&gt; foo &lt;%cmdsep%&gt; &lt;%mv%&gt; foo
+ other_dir
+ </em>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%cmp%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to compare two files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%cp%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to copy a file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%crlf%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific line
+ ending.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%equote%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A project non-specific escaped
+ double quote.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%gendir%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output directory specified by
+ the <em class="Code">gendir</em> setting. This
+ variable is not available to <em class=
+ "Code">postbuild</em>, <em class=
+ "Code">postclean</em>, or<em class=
+ "Code">prebuild.</em>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%gt%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform and project
+ non-specific representation of a greater than
+ sign.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%lt%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform and project
+ non-specific representation of a less than sign.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%mkdir%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to make a directory.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%mv%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to move a file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%nul%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific null
+ device.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%pathsep%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific path
+ separator (; or :).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%or%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform and project
+ non-specific representation of a command conditional
+ or.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%os%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">Returns either win32 or unix.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%prj_type%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The project type as supplied
+ by the -type command line option.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%quote%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A project non-specific
+ representation of a double quote.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%rm%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific command
+ to delete a file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%rmdir%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific recursive
+ directory delete command.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%slash%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A platform non-specific directory
+ separator.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%temporary%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ A temporary file name. The
+ generated temporary file name contains no directory
+ portion and is the same for each use within the same
+ variable setting.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="2">
+ <p class="TblCode">
+ The following variables will
+ be set to the known extension for Windows based
+ project types and empty on non-Windows based
+ project types.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%bat%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The extension for batch
+ files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%cmd%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The extension for command
+ files.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="TblCode">
+ <em class=
+ "TableCode">&lt;%exe%&gt;</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The extension for executable
+ files.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+
+ </div>
+ </div>
+ </div>
+
+ <div>
+ <a name="TheFeatureFile" id="TheFeatureFile"></a>
+
+ <h5 class="Head4">The Feature File</h5>
+
+
+ <p class="BodyNoLead">
+ The term feature, as used by MPC,
+ describes different concepts or external software that a project
+ may require in order to build properly. The feature file
+ determines which features are enabled or disabled which has a
+ direct effect on whether or not MPC generates a project.
+ </p>
+
+ <p class="Body">
+ It supports the standard comment (<em class=
+ "Code">//</em> ) and assignment of numbers to feature names.
+ These feature names will correspond to values given to the
+ <em class="Code">requires</em> and <em class="Code">avoids</em>
+ keywords in mpc files.
+ </p>
+
+ <p class="Body">
+ If a feature is not listed in the feature file
+ or is listed with a boolean value of true (1), that feature is
+ enabled. If a feature is listed and has a boolean value of false
+ (0), that feature is disabled.
+ </p>
+
+ <p class="Body">
+ If a feature name is listed in the <em class=
+ "Code">requires</em> value for a particular project and that
+ feature is enabled, that project will be generated. If the
+ feature is not enabled, the project will not be generated.
+ </p>
+
+ <p class="Body">
+ The opposite holds true for the <em class=
+ "Code">avoids</em> keyword. If a feature name is listed in the
+ <em class="Code">avoids</em> value for a project and the feature
+ is disabled, that project will be generated. If the feature is
+ enabled, the project will not be generated.
+ </p>
+
+ <p class="Body">
+ The global feature file for MPC contains the
+ following values.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">boost = 0</p>
+
+ <p class="Code">bzip2 = 0</p>
+
+ <p class="Code">java = 0</p>
+
+ <p class="Code">mfc = 0</p>
+
+ <p class="Code">python = 0</p>
+
+ <p class="Code">qt = 0</p>
+
+ <p class="Code">rpc = 0</p>
+
+ <p class="Code">swig_java = 0</p>
+
+ <p class="Code">swig_perl = 0</p>
+
+ <p class="Code">swig_php = 0</p>
+
+ <p class="Code">swig_python = 0</p>
+
+ <p class="Code">swig_ruby = 0</p>
+
+ <p class="Code">swig_tcl = 0</p>
+
+ <p class="Code">uses_wchar = 0</p>
+
+ <p class="Code">xalan = 0</p>
+
+ <p class="Code">xerces = 0</p>
+
+ <p class="Code">xerces2 = 0</p>
+
+ <p class="Code">xerces3 = 0</p>
+
+ <p class="Code">ziparchive = 0</p>
+
+ <p class="Code">zlib = 0</p>
+
+ <p class="Code">zzip = 0</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ In the above contents, all of these features are
+ disabled for each project generated. If these values do not suit
+ your needs, then you must do one of the following:
+ </p>
+
+ <p class="BodyNoLead">
+ <ul>
+ <li>
+ Create a project specific feature file in the <em class=
+ "Code">config</em> directory (ex., <em class=
+ "Code">make.features</em> for the <em class="Code">make</em>
+ project type) to set features for a particular project
+ type.
+ </li>
+
+ <li>
+ Create a <em class="Code">default.features</em> file in
+ the <em class="Code">config</em> directory that contains the
+ feature set you need. These will be applied to all project
+ types.
+ </li>
+
+ <li>
+ Create a feature file anywhere you like with the features
+ you want and use the <em class="Code">-feature_file</em>
+ option to specify the location.
+ </li>
+
+ <li>
+ Use the <em class="Code">-features</em> option to
+ dynamically modify the feature settings.
+ </li>
+ </ul>
+ </p>
+
+ <p class="Body">
+ Generated projects will have a combination of
+ features specified in the <em class="Code">global.features</em>
+ file as well as in your feature file. Therefore, if a feature is
+ disabled in the global file and you want to enable it, you must
+ explicitly enable it in your feature file.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Feature Projects</h5>
+
+
+ <p class="Body">
+ A feature project contains information as
+ a project would, but can only be a base project and will only be
+ added to a sub project if the features that it requires are
+ enabled or the features that it avoids are disabled.
+ </p>
+
+ <p class="Body">
+ A feature definition requires at least one
+ feature name. A name by itself specifies that the feature must be
+ enabled. A &rsquo;!&rsquo; in front of the feature name indicates
+ that the feature must be disabled. There may be more than one
+ comma separated feature listed between the parenthesis.
+ </p>
+
+ <p class="Body">
+ The following example show how to declare a
+ feature project.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">// ziparchive.mpb</p>
+
+ <p class="Code">feature(ziparchive) {</p>
+
+ <p class="Code">&nbsp;&nbsp;includes += $(ZIPARCHIVEROOT)</p>
+
+ <p class="Code">
+ &nbsp;&nbsp;libpaths +=
+ $(ZIPARCHIVEROOT)/lib
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;libs &nbsp;&nbsp;&nbsp;&nbsp;+=
+ ziparch
+ </p>
+
+ <p class="Code">}</p>
+
+ <p class="Code">&nbsp;</p>
+ </blockquote>
+
+ <p class="Body">
+ With this example, any project that inherits
+ from the <em class="Code">ziparchive</em> base feature project
+ will contain the project information only if the <em class=
+ "Code">ziparchive</em> feature is enabled.
+ </p>
+
+ </div>
+ </div>
+
+ <div>
+ <h4 class="Head3">Defaults</h4>
+
+
+ <p class="BodyNoLead">
+ MPC has been designed to minimize the amount
+ of maintenance that goes into keeping build tool files up-to-date
+ with the project. If your source code is organized <em class=
+ "Emphasis">properly</em>, the maintenance of your mpc files should
+ be minimal.
+ </p>
+
+ <p class="Body">
+ With the use of inheritance and proper code
+ arrangement, an mpc file for a TAO related project may be as simple
+ as:
+ </li>
+
+ <blockquote>
+
+ <p class="Code">project: taoserver {</p>
+
+ <p class="Code">}</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ This project definition could be used to generate
+ a project for a TAO server with multiple idl, header and source
+ files.
+ </p>
+
+ <p class="Body">
+ The idea of <em class="Emphasis">proper</em>
+ source layout is basically summarized as <em class="Emphasis">
+ one
+ directory per binary target.
+ </em> If only the files that pertain to
+ a single target are located in the directory with the mpc file,
+ then the MPC defaults will satisfy most project needs.
+ </p>
+
+ <p class="Body">
+ Of course, it will not always be possible or
+ desirable to organize your project code in this fashion, so all
+ defaulting behavior can be overridden. The next sections describe
+ the default behaviors of MPC and how to override them.
+ </p>
+
+
+ <div>
+ <h5 class="Head4">Source Files</h5>
- <p class="Code">&nbsp;&nbsp;Modify_Custom(IDL) {</p>
+ <p class="BodyNoLead">
+ New source files are added and others are
+ removed quite often in a developing project. If the <em class=
+ "Code">Source_Files</em> component is left out of an mpc file,
+ then MPC will assume that any file matching one of the <em class=
+ "Emphasis">source</em> extensions is to be included in the
+ project. For most project types, the source extensions are:
+ <em class="Code">.cpp</em>, <em class="Code">.cxx</em>,
+ <em class="Code">.cc</em>, <em class="Code">.c</em> and
+ <em class="Code">.C</em>. Only the following extensions are
+ considered source extensions: <em class="Code">.cpp</em>,
+ <em class="Code">.cxx</em> and <em class="Code">.c</em> for the
+ <em class="Code">em3</em> and <em class="Code">vc6</em> project
+ types as eMbedded Visual C++ and Visual C++ 6.0 do not understand
+ files with the <em class="Code">.cc</em> or <em class=
+ "Code">.C</em> extension.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Template Files</h5>
+
+
+ <p class="BodyNoLead">
+ MPC assumes that any file matching one of
+ the <em class="Emphasis">template</em> extensions is to be
+ included in the project if the <em class=
+ "Code">Template_Files</em> component is left out of an mpc file.
+ For most project types, the template extensions are: <em class=
+ "Code">_T.cpp</em>, <em class="Code">_T.cxx</em>, <em class=
+ "Code">_T.cc</em>, <em class="Code">_T.c</em>, and <em class=
+ "Code">_T.C</em>. However, only the <em class="Code">_T.cpp</em>
+ and <em class="Code">_T.cxx</em> extensions are considered
+ template extensions for the <em class="Code">em3</em> and
+ <em class="Code">vc6</em> project types.
+ </p>
+
+ <p class="Body">
+ If the <em class="Code">Source_Files</em>
+ component is defaulted, and a file is explicitly listed in the
+ Template_Files section that happens to appear to MPC as a source
+ file (i.e., has a source file extension, but does not have
+ <em class="Code">_T</em> directly before it), MPC will
+ automatically exclude it from the <em class=
+ "Code">Source_Files</em> component.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Inline Files</h5>
+
+ <p class="BodyNoLead">
+ As with source files, the <em class=
+ "Code">Inline_Files</em> component can be left out of an mpc file
+ to allow it to generate defaults. Files that match the <em class=
+ "Code">.i</em> and <em class="Code">.inl</em> extensions are
+ considered inline files.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">Inline_Files</em> component
+ has a special interaction with the <em class=
+ "Code">Source_Files</em> component. If the <em class=
+ "Code">Source_Files</em> component has files listed and the
+ <em class="Code">Inline_Files</em> component is omitted, then
+ each source file is <em class="Emphasis">matched</em> to an
+ inline file. If the matching inline file is found or would be
+ generated from a custom command, it is added to the <em class=
+ "Code">Inline_Files</em> component list.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Header Files</h5>
+
+ <p class="BodyNoLead">
+ As with source files, the <em class=
+ "Code">Header_Files</em> component can be left out of an mpc file
+ to allow it to generate defaults. Files that match the <em class=
+ "Code">.h</em>, <em class="Code">.hpp</em>, <em class=
+ "Code">.hxx</em>, and <em class="Code">.hh</em> extensions are
+ considered header files.
+ </p>
+
+ <p class="Body">
+ The <em class="Code">Header_Files</em> component
+ has a special interaction with the <em class=
+ "Code">Source_Files</em> component. If the <em class=
+ "Code">Source_Files</em> component has files listed and the
+ <em class="Code">Header_Files</em> component is omitted, then
+ each source file is <em class="Emphasis">matched</em> to a header
+ file. If the matching header file is found or would be generated
+ from a custom command, then it is added to the <em class=
+ "Code">Header_Files</em> component list.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Documentation Files</h5>
+
+ <p class="BodyNoLead">
+ The <em class=
+ "Code">Documentation_Files</em> component, if omitted, will
+ default to all files that end in the following: <em class=
+ "Code">README</em>, <em class="Code">readme</em>, <em class=
+ "Code">.doc</em>, <em class="Code">.html</em> and <em class=
+ "Code">.txt</em>.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Resource Files</h5>
+
+
+ <p class="BodyNoLead">
+ The <em class="Code">Resource_Files</em>
+ component, if omitted, will default to only the files that end in
+ <em class="Code">.rc</em> and are similar to the name of the
+ project. For example, if a directory contains three <em class=
+ "Code">.rc</em> files and the project name is <em class=
+ "Code">foo</em>, only the <em class="Code">.rc</em> files that
+ contain the word <em class="Code">foo</em> will automatically be
+ added to the <em class="Code">Resource_Files</em> component
+ list.
+ </p>
+
+ </div>
+
+ <div>
+ <h5 class="Head4">Custom Defined Files</h5>
+
+
+ <p class="BodyNoLead">
+ The <em class="Code">
+ Custom Defined
+ Files
+ </em> components have a special interaction with the
+ <em class="Code">Source_Files</em> component. If the custom
+ command generates source files and has the <em class=
+ "Code">automatic_out</em> setting set to 1, they will
+ automatically be added to the <em class="Code">Source_Files</em>
+ component list. If any of the files listed in the <em class=
+ "Code">Source_Files</em> components list match any of the
+ generated source file names, then none of the generated source
+ file names will be automatically added to the <em class=
+ "Code">Source_Files</em> components list.
+ </p>
+
+ </div>
+
+ <div>
+ <a name="ExampleMPCFile" id="ExampleMPCFile"></a>
+
+ <h5 class="Head4">Example MPC File</h5>
+
+ <p class="BodyNoLead">
+ The example below uses the directory
+ contents of <em class=
+ "Code">$TAO_ROOT/orbsvcs/performance-tests/RTEvent/lib</em> to
+ illustrate the simplicity of mpc files:
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ Auto_Disconnect.cpp Loopback_Supplier.h
+ RTEC_Initializer.cpp
+ </p>
<p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;source_pre_extension = , _s</p>
+ Auto_Disconnect.h Low_Priority_Setup.cpp
+ RTEC_Initializer.h
+ </p>
<p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;header_pre_extension = , _s</p>
+ Auto_Disconnect.inl Low_Priority_Setup.h
+ rtec_perf_export.h
+ </p>
<p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;inline_pre_extension = , _s</p>
+ Auto_Functor.cpp Low_Priority_Setup.inl
+ RTEC_Perf.mpc
+ </p>
+
+ <p class="Code">Auto_Functor.h Makefile RTPOA_Setup.cpp</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;inline_outputext
- &nbsp;&nbsp;&nbsp;&nbsp;= .i</p>
+ <p class="Code">
+ Auto_Functor.inl ORB_Holder.cpp
+ RTPOA_Setup.h
+ </p>
+
+ <p class="Code">
+ Client_Group.cpp ORB_Holder.h
+ RTPOA_Setup.inl
+ </p>
+
+ <p class="Code">
+ Client_Group.h ORB_Holder.inl
+ RTServer_Setup.cpp
+ </p>
+
+ <p class="Code">
+ Client_Group.inl ORB_Shutdown.cpp
+ RTServer_Setup.h
+ </p>
+
+ <p class="Code">
+ Client_Options.cpp ORB_Shutdown.h
+ RTServer_Setup.inl
+ </p>
+
+ <p class="Code">
+ Client_Options.h ORB_Shutdown.inl
+ Send_Task.cpp
+ </p>
+
+ <p class="Code">
+ Client_Pair.cpp ORB_Task_Activator.cpp
+ Send_Task.h
+ </p>
+
+ <p class="Code">
+ Client_Pair.h ORB_Task_Activator.h
+ Send_Task_Stopper.cpp
+ </p>
+
+ <p class="Code">
+ Client_Pair.inl ORB_Task_Activator.inl
+ Send_Task_Stopper.h
+ </p>
+
+ <p class="Code">
+ Consumer.cpp ORB_Task.cpp
+ Send_Task_Stopper.inl
+ </p>
+
+ <p class="Code">Consumer.h ORB_Task.h Servant_var.cpp</p>
+
+ <p class="Code">Control.cpp ORB_Task.inl Servant_var.h</p>
+
+ <p class="Code">Control.h Peer_Base.cpp Servant_var.inl</p>
+
+ <p class="Code">EC_Destroyer.cpp Peer_Base.h Shutdown.cpp</p>
+
+ <p class="Code">
+ EC_Destroyer.h PriorityBand_Setup.cpp
+ Shutdown.h
+ </p>
+
+ <p class="Code">
+ EC_Destroyer.inl PriorityBand_Setup.h
+ Shutdown.inl
+ </p>
+
+ <p class="Code">
+ Federated_Test.idl PriorityBand_Setup.inl
+ Supplier.cpp
+ </p>
+
+ <p class="Code">
+ Implicit_Deactivator.cpp RIR_Narrow.cpp
+ Supplier.h
+ </p>
+
+ <p class="Code">
+ Implicit_Deactivator.h RIR_Narrow.h
+ SyncScope_Setup.cpp
+ </p>
+
+ <p class="Code">
+ Implicit_Deactivator.inl RT_Class.cpp
+ SyncScope_Setup.h
+ </p>
+
+ <p class="Code">
+ Loopback_Consumer.cpp RT_Class.h
+ SyncScope_Setup.inl
+ </p>
+
+ <p class="Code">
+ Loopback_Consumer.h RT_Class.inl
+ TAO_RTEC_Perf.dsp
+ </p>
+
+ <p class="Code">
+ Loopback.cpp RTClient_Setup.cpp
+ TAO_RTEC_Perf.dsw
+ </p>
+
+ <p class="Code">
+ Loopback.h RTClient_Setup.h
+ Task_Activator.cpp
+ </p>
+
+ <p class="Code">
+ Loopback_Pair.cpp RTClient_Setup.inl
+ Task_Activator.h
+ </p>
+
+ <p class="Code">
+ Loopback_Pair.h RTCORBA_Setup.cpp
+ Task_Activator.inl
+ </p>
+
+ <p class="Code">Loopback_Pair.inl RTCORBA_Setup.h</p>
+
+ <p class="Code">Loopback_Supplier.cpp RTCORBA_Setup.inl</p>
+
+ </blockquote>
+
+ <p class="Body">
+ The following mpc file (<em class=
+ "Code">RTEC_Perf.mpc</em> ) shows the simple and small number of
+ lines required to generate usable build tool project files.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ project(RTEC_Perf): strategies, rtcorbaevent,
+ minimum_corba {
+ </p>
+
+ <p class="Code">&nbsp;&nbsp;sharedname = TAO_RTEC_Perf</p>
+
+ <p class="Code">
+ &nbsp;&nbsp;idlflags +=
+ -Wb,export_macro=TAO_RTEC_Perf_Export \
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Wb,export_include=rtec_perf_export.h
+ </p>
+
+ <p class="Code">
+ &nbsp;&nbsp;dllflags +=
+ TAO_RTEC_PERF_BUILD_DLL
+ </p>
+
+ <p class="Code">&nbsp;</p>
+
+ <p class="Code">&nbsp;&nbsp;Template_Files {</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Auto_Disconnect.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Auto_Functor.cpp</p>
+
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;Low_Priority_Setup.cpp
+ </p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;RIR_Narrow.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Servant_var.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Shutdown.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Task_Activator.cpp</p>
<p class="Code">&nbsp;&nbsp;}</p>
<p class="Code">}</p>
- </li>
- </ul>
+
+
+ </blockquote>
+
+ <p class="Body">
+ A line-by-line explanation of the example mpc
+ file is listed below.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ project(RTEC_Perf): strategies, rtcorbaevent,
+ minimum_corba {
+ </p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ The first line declares a project named
+ <em class="Code">RTEC_Perf</em> that inherits from the base
+ projects listed after the colon.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">sharedname = TAO_RTEC_Perf</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Line two determines that the project is a
+ library and the library name is <em class=
+ "Code">TAO_RTEC_Perf</em>.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ idlflags +=
+ -Wb,export_macro=TAO_RTEC_Perf_Export \
+ </p>
+
+ <p class="Code">-Wb,export_include=rtec_perf_export.h</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Lines three and four add to the flags passed to
+ the IDL compiler when processing the idl files.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">dllflags += TAO_RTEC_PERF_BUILD_DLL</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Line five adds <em class=
+ "Code">TAO_RTEC_PERF_BUILD_DLL</em> to the <em class=
+ "Code">dllflags</em>, which defines a macro that is used by the
+ <em class="Code">rtec_perf_export.h</em> header file.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">Template_Files {</p>
+
+ <p class="Code">&nbsp;&nbsp;Auto_Disconnect.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;Auto_Functor.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;Low_Priority_Setup.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;RIR_Narrow.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;Servant_var.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;Shutdown.cpp</p>
+
+ <p class="Code">&nbsp;&nbsp;Task_Activator.cpp</p>
+
+ <p class="Code">}</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Lines 7 through 15 name the listed cpp files as
+ part of the <em class="Code">Template_Files</em>. <br/><strong>Note:</strong>
+ This usage of Template_Files refers to files containing C++ template declaration and
+ definition source code and should not be confused with MPC <a href ="#MPD_Syntax">template files</a>
+ which are used to define the structure of generated project files.
+ </p>
+
+ <p class="Body">
+ You may have noticed that there isn&rsquo;t much
+ to the file above. With the default behaviors that are built into
+ MPC, there does not need to be. We rely on the defaults to
+ determine the values of <em class="Code">IDL_Files</em>,
+ <em class="Code">Source_Files</em>, <em class=
+ "Code">Inline_Files</em> , and <em class=
+ "Code">Header_Files</em>. Since the template files in this example C++ project
+ do not follow the naming convention assumed by the MPC built-in defaults
+ (_T.cpp, _T.cxx, _T.cc, _T.C),
+ we must explicitly list them. We also
+ rely on inheritance to get many of the TAO-related options.
+ </p>
+
+
+ </div>
</div>
+ </div>
+
+ <div>
+ <h3 class="Head2">Adding a New Type</h3>
+ <hr>
+
+ <p class="Body">
+ If MPC does not support a particular build tool, you
+ may want to consider adding a new project type. For instance, support
+ could be added to MPC for Boost Jam, Xcode and many others. To do so
+ will require knowledge of the MPC input files, as well as Object
+ Oriented Perl.
+ </p>
+
+
+ <div>
+ <h4 class="Head3">Input File Syntax</h4>
+
+ <p class="BodyNoLead">
+ This section describes the syntax of the
+ files that are used during project generation.
+ </p>
+
<div>
- <h6 class="Head6">Custom Post Command</h6>
+ <h5 class="Head4">
+ <a name="MPD_Syntax"></a>Template Files
+ (mpd)
+ </h5>
+
+ <p class ="Body">
+ Template files make up the bulk of what
+ MPC puts into each generated project file. They provide the plain
+ text and the layout of the data provided by the mpc files, using
+ various template directives.
+ </p>
+
+ <p class="Body">
+ Template directives are declared using a
+ <em class="Code">&lt;% %&gt;</em> construct. This construct is
+ used to create if statements, for loops and to access variables.
+ One thing to note is that any text, including white space, that
+ is not enclosed within <em class="Code">&lt;% %&gt;</em> is left
+ untouched and is passed directly into the generated project
+ file.
+ </p>
+
+ <p class="Body">
+ An <em class="Code">if</em> statement can appear
+ on a single line or it can span multiple lines. For example, the
+ following line:
+ </p>
+
+ <blockquote>
- <ul>
- <li class="BodyNoLead">When defining a <em class=
- "Code">postcommand</em> as part of a <em class=
- "Code">Define_Custom</em>, a few pseudo template variables
- are available to provide some flexibility. The following
- table shows the pseudo template variables that can be
- accessed only from the <em class="Code">postcommand</em>.
- Please note that <em class="Code">&lt;%</em> and <em class=
- "Code">%&gt;</em> are part of the syntax.</li>
+ <p class="Code">
+ &lt;%if(exename)%&gt;BIN =
+ &lt;%exename%&gt;&lt;%else%&gt;LIB =
+ &lt;%sharedname%&gt;&lt;%endif%&gt;
+ </p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ is equivalent to:</li>
+
+ <blockquote>
+
+ <p class="Code">&lt;%if(exename)%&gt;</p>
+
+ <p class="Code">BIN = &lt;%exename%&gt;</p>
+
+ <p class="Code">&lt;%else%&gt;</p>
+
+ <p class="Code">LIB = &lt;%sharedname%&gt;</p>
+
+ <p class="Code">&lt;%endif%&gt;</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ <a name="foreach_syntax"></a> A <em class=
+ "Code">foreach</em> statement can also appear on a single line or
+ can span multiple lines. As described below in the keywords
+ section, the <em class="Code">foreach</em> statement evaluates
+ the variable in a space-separated list context.
+ </p>
+
+ <p class="Body">
+ There are a couple of ways to write a <em class=
+ "Code">foreach</em> loop. The first and preferred way is to name
+ the loop variable and then list each variable to be
+ evaluated.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ FILES=&lt;%foreach(fvar, idl_files source_files
+ header_files)%&gt; &lt;%fvar%&gt;&lt;%endfor%&gt;
+ </p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ The second way is to let the <em class=
+ "Code">foreach</em> statement determine the loop variable. With
+ this style, each value can be accessed via the first variable
+ name passed to the <em class="Code">foreach</em> with the
+ trailing &rsquo;<em class="Code">s</em> &rsquo; removed.
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ FILES=&lt;%foreach(idl_files source_files
+ header_files)%&gt; &lt;%idl_file%&gt;&lt;%endfor%&gt;
+ </p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Note that the <em class=
+ "Code">&lt;%idl_file%&gt;</em> variable will contain each
+ individual value of the <em class="Code">idl_files</em>,
+ <em class="Code">source_files</em> and <em class=
+ "Code">header_files</em> list. If the variable in the <em class=
+ "Code">foreach</em> does not end in &rsquo;<em class=
+ "Code">s</em> &rsquo;, the variable of the same name within the
+ <em class="Code">foreach</em> will contain each individual value,
+ e.g.,
+ </p>
+
+ <blockquote>
+
+ <p class="Code">
+ &lt;%foreach(filelist)%&gt;
+ &lt;%filelist%&gt;&lt;%endfor%&gt;
+ </p>
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Post Command Pseudo
- Variables</h6>
- <table border="1" summary="Post Command Pseudo Variables">
+ </blockquote>
+
+ <p class="Body">
+ The following table lists keywords that can
+ appear in template files.
+ </p>
+
+ <p class ="Body">
+ <a name="38037"></a>
+
+ <h6 class="NumberedTableTitle">Template File Keywords</h6>
+
+ <table border="1" summary="Template File Keywords">
<tr>
<th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Variable</p>
+ <p class="Tbl-Heading">Keyword</p>
</th>
<th rowspan="1" colspan="1">
@@ -4241,3360 +6995,2391 @@ class="XRef">the -workers_port option</a>,
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">basename</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The input file to the
- command.</p>
+ <p class="Tbl-Body">
+ Evaluates the variable name and
+ removes the directory portion from that value.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input_basename%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">basenoextension</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The basename of the input file to
- the command.</p>
+ <p class="Tbl-Body">
+ This is similar to <em class=
+ "Code">basename</em> except that the extension is also
+ removed from the variable name value.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input_dirname%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">comment</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The directory name of the input
- file to the command.</p>
+ <p class="Tbl-Body">
+ The value passed to comment is
+ ignored and can be any set of characters, except a new
+ line or a closing parenthesis.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">compares</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The input file to the command
- with the extension stripped off.</p>
+ <p class="Tbl-Body">
+ This function returns true if the
+ variable value (first parameter) is equal to the string
+ value (second parameter).
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input_ext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">contains</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">This gives the file extension of
- the input file (if there is one).</p>
+ <p class="Tbl-Body">
+ This function returns true if the
+ variable value (first parameter) contains the regular
+ expression (second parameter).
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">deref</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file created by the
- original command.</p>
+ <p class="Tbl-Body">
+ Dereference the variable passed as
+ a parameter, treating its value as another variable
+ name and returning that variable's value.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output_basename%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dirname</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The basename of the output file
- to the command.</p>
+ <p class="Tbl-Body">
+ Evaluates the variable name and
+ removes the <em class="Code">basename</em> from that
+ value.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output_dirname%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">duplicate_index</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The directory name of the output
- file to the command.</p>
+ <p class="Tbl-Body">
+ This function returns a number based
+ on the number of times a file with the same name (but
+ different directory) is seen within a project. The
+ function returns false upon the first occurrence of a
+ file.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">else</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file created by the
- original command with the extension stripped off.</p>
+ <p class="Tbl-Body">
+ Used with the <em class=
+ "Code">if</em> statement. An <em class="Code">else</em>
+ block will be evaluated if the statement does not
+ evaluate to true.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output_ext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">endfor</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">This gives the file extension of
- the output file (if there is one).</p>
+ <p class="Tbl-Body">
+ Used with <em class=
+ "Code">foreach</em>. This ends <em class=
+ "Code">foreach</em> block.
+ </p>
</td>
</tr>
<tr>
- <td rowspan="1" colspan="2">
- <p class="TblCode">The output file can be referenced
- as a generic output file, or it can be referenced as
- a component file using one of the following
- variables. If it does not match the specific type the
- value will be empty.</p>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">endif</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Used with the <em class=
+ "Code">if</em> statement. This ends an <em class=
+ "Code">if</em> or <em class="Code">if/else</em>
+ block.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%documentation_file%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">ends_with</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it is a
- documentation file.</p>
+ <p class="Tbl-Body">
+ This function returns true if the
+ variable value (first parameter) ends with the regular
+ expression (second parameter).
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%header_file%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">eval</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it has a
- header file extension.</p>
+ <p class="Tbl-Body">
+ This is similar to eval in perl. The
+ template variable passed to this function will be
+ evaluated within the context of the current template.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%inline_file%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">extensions</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it has an
- inline file extension.</p>
+ <p class="Tbl-Body">
+ Returns a list of extensions based on
+ the component name parameter (e.g., source_files,
+ header_files, etc.)
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%resource_file%&gt;</em> (<em class=
- "TableCode">&lt;%resx_file%&gt;</em> for C# and
- VB)</p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">flag_overrides</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it has a
- resource file extension.</p>
+ <p class="Tbl-Body">
+ This is directly related to
+ overriding the project-wide settings in an mpc file. It
+ takes two variable names that are comma separated. The
+ first corresponds to a file name and the second is any
+ variable name.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%source_file%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">foreach</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it has a
- source file extension.</p>
+ <p class="Tbl-Body">
+ The given variable names are
+ evaluated in a list context which is space separated.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%template_file%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">forfirst</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file if it is a
- template file.</p>
+ <p class="Tbl-Body">
+ Used with <em class=
+ "Code">foreach</em>. The literal value passed to
+ <em class="Code">forfirst</em> will be placed on the
+ first iteration of <em class="Code">foreach</em>.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%documentation_file_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">forlast</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it is a documentation file.</p>
+ <p class="Tbl-Body">
+ Used with <em class=
+ "Code">foreach</em>. The literal value passed to
+ <em class="Code">forlast</em> will be placed on the last
+ iteration of <em class="Code">foreach</em>.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%header_file_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">fornotfirst</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it has a header file extension.</p>
+ <p class="Tbl-Body">
+ Used with <em class=
+ "Code">foreach</em>. The literal value passed to
+ <em class="Code">fornotfirst</em> will be placed on each
+ iteration of <em class="Code">foreach</em> except for the
+ first.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%inline_file_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">fornotlast</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it has an inline file extension.</p>
+ <p class="Tbl-Body">
+ Used with <em class=
+ "Code">foreach</em>. The literal value passed to
+ <em class="Code">fornotlast</em> will be placed on each
+ iteration of <em class="Code">foreach</em> except for the
+ last.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%resource_file_noext%&gt;</em>
- (<em class="TableCode">&lt;%resx_file_noext%&gt;</em>
- for C# and VB)</p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">full_path</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it has a resource file extension.</p>
+ <p class="Tbl-Body">
+ Returns full path of the value of the
+ variable name passed a the parameter.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%source_file_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">has_extension</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it has a source file extension.</p>
+ <p class="Tbl-Body">
+ Returns true is the variable value
+ has a file extension.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%template_file_noext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">if</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output file without an
- extension if it is a template file.</p>
+ <p class="Tbl-Body">
+ Used to determine if a variable is
+ defined. The not operator (<em class="Code">!</em> ) can
+ be used to invert the if check. This construct will only
+ check for values defined within an mpc or mpt file.
+ Default values (even those implemented by the project
+ creators) are not considered in the <em class=
+ "Code">if</em> statement.
+ </p>
</td>
</tr>
<tr>
- <td rowspan="1" colspan="2">
- <p class="TblCode">The extensions of the input and
- output files are also available as pseudo
- variables.</p>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">keyname_used</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This function is used to associate a
+ key with a variable value. If the key has been associated
+ with a variable value more than once, either through
+ physical repetition of the key in the template or through
+ evaluation of a foreach context, the count of association
+ will be appended to the output.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%input_ext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">lc</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The extension of the input file
- (if it has one).</p>
+ <p class="Tbl-Body">
+ Return the given variable value in
+ all lower case characters.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%output_ext%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">marker</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The extension of the output file
- (if it has one).</p>
+ <p class="Tbl-Body">
+ This is directly related to the
+ <em class="Code">verbatim</em> keyword from the mpc
+ syntax. This can be used to designate markers within a
+ template. Ex. <em class=
+ "Code">&lt;%marker(local)%&gt;</em>.
+ </p>
</td>
</tr>
- </table>
- </li>
- <li class="Body">&nbsp;</li>
-
- <li class="Body">The following table describes the pseudo
- template variables that can be used in the <em class=
- "Code">command</em>, <em class="Code">commandflags</em>,
- <em class="Code">dependent</em>, <em class=
- "Code">output_option</em> and <em class=
- "Code">postcommand</em> settings.</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle"><a name=
- "Common Pseudo Variables"></a>Common Pseudo Variables</h6>
-
- <table border="1" summary="Common Pseudo Variables">
<tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Variable</p>
- </th>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">multiple</em>
+ </p>
+ </td>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This function returns true if the
+ array parameter contains multiple values.
+ </p>
+ </td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%and%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">noextension</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform and project
- non-specific representation of a command conditional
- and.</p>
+ <p class="Tbl-Body">
+ Evaluates the variable name value as
+ a file name and removes the extension from that value
+ including the period.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%cat%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">normalize</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to print a file to the terminal.</p>
+ <p class="Tbl-Body">
+ Convert spaces, dashes, slashes,
+ dollar signs, parenthesis and dots in the given variable
+ value to underscores.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%cmdsep%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">remove_from</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A project and platform
- non-specific command separator which always runs
- right-hand side of the command. For example, in the
- following psuedo commmand string, both the <em class=
- "Code">&lt;%cat%&gt;</em> and <em class=
- "Code">&lt;%mv%&gt;</em> commands would be run.
- <em class="Code">&lt;%cat%&gt; &lt;%source_file%&gt;
- &lt;%gt%&gt; foo &lt;%cmdsep%&gt; &lt;%mv%&gt; foo
- other_dir</em></p>
+ <p class="Tbl-Body">
+ This function will remove a file in a
+ component list. It requires three parameters. The first
+ parameter is a component name (e.g., Source_Files), the
+ second parameter is a regular expression pattern and
+ the third parameter is a project or template variable
+ name. The fourth and optional parameter allows you to
+ alter the project or template variable value by
+ removing the end matching portion. If the value of
+ the project or template variable (i.e., parameter
+ three) after being modified by parameter four and
+ having the regular expression pattern (i.e.,
+ parameter two) appended to it matches any value
+ within the compent list (named by parameter one), it
+ will be removed from that component list and passed
+ back.
+ any
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%cmp%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">reverse</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to compare two files.</p>
+ <p class="Tbl-Body">
+ This function reverses the order of
+ the array parameter values.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%cp%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">scope</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to copy a file.</p>
+ <p class="Tbl-Body">
+ This is used to set the scope of
+ execution of a function that will operate on the template
+ output. A scope is begun by passing "enter" as the first
+ parameter and a function name as the second parameter.
+ Currently, the only function name supported is "escape".
+ The third parameter specifies a string on which the
+ function will operate. Any template text that matches the
+ string parameter while within this scope will be
+ transformed by the function parameter. A scope is then
+ ended by passing "leave".
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%crlf%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">set</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific line
- ending.</p>
+ <p class="Tbl-Body">
+ This function is used to set or
+ create a template variable. This function takes two
+ parameters; the first is the template variable name
+ and the second is the variable value.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%equote%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">sort</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A project non-specific escaped
- double quote.</p>
+ <p class="Tbl-Body">
+ This function sorts the array
+ parameter values.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%gendir%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">starts_with</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output directory specified by
- the <em class="Code">gendir</em> setting. This
- variable is not available to <em class=
- "Code">postbuild</em>, <em class=
- "Code">postclean</em>, or<em class=
- "Code">prebuild.</em></p>
+ <p class="Tbl-Body">
+ This function returns true if the
+ variable value (first parameter) starts with the regular
+ expression (second parameter).
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%gt%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">transdir</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform and project
- non-specific representation of a greater than
- sign.</p>
+ <p class="Tbl-Body">
+ Replaces values within the directory
+ portion of a variable value with something that can be
+ used as a relative path. The current working directory is
+ removed and ".." is replaced with "dotdot".
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%lt%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">translate_vars</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform and project
- non-specific representation of a less than sign.</p>
+ <p class="Tbl-Body">
+ The first parameter to this function
+ is the name of a variable. The second, optional,
+ parameter is the operating system for which the
+ project is being generated (e.g., linux, solaris,
+ win32, etc.) It replaces $(...) found within the
+ value of the variable with the equivalent environment
+ variable reference based on the operating system.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%mkdir%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">uc</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to make a directory.</p>
+ <p class="Tbl-Body">
+ Return the given variable value in
+ all upper case characters.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%mv%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">ucw</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to move a file.</p>
+ <p class="Tbl-Body">
+ Return the given variable value with
+ the first letter of each word in upper case. Words are
+ separated by spaces or underscores.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%nul%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">uniq</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific null
- device.</p>
+ <p class="Tbl-Body">
+ This function returns the unique set
+ of the array parameter values.
+ </p>
</td>
</tr>
+ </table>
+ </p>
+
+ <p class="Body">
+ The following table lists special names that can
+ be used as variables in some template files. The variables listed
+ in the <a href=
+ "MakeProjectCreator.html#Common_Pseudo_Variables" class=
+ "XRef">Common_Pseudo_Variables</a> table can be used as well
+ (except for <em class="Code">&lt;%temporary%&gt;</em>).
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ Special Values used in Template
+ Files
+ </h6>
+
+ <table border="1" summary=
+ "Special Values used in Template Files">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Value</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%pathsep%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">am_version</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific path
- separator (; or :).</p>
+ <p class="Tbl-Body">
+ Implemented by the Automake project
+ creator module, converts the <em class=
+ "Code">version</em> setting into a suitable value for
+ automake.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%or%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">ciao</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform and project
- non-specific representation of a command conditional
- or.</p>
+ <p class="Tbl-Body">
+ Implemented by the GNUACE project
+ creator module, specifies that the project uses CIAO.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%os%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">compilers</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">Returns either win32 or unix.</p>
+ <p class="Tbl-Body">
+ Implemented by the Make project
+ creator module, provides the compiler name based on the
+ current project language.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%prj_type%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">cppdir</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The project type as supplied
- by the -type command line option.</p>
+ <p class="Tbl-Body">
+ This value is implemented by the
+ BMake project creator module. It returns a semicolon
+ separated list of directories taken from each value in
+ the <em class="Code">Source_Files</em> list.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%quote%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">custom_types</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A project non-specific
- representation of a double quote.</p>
+ <p class="Tbl-Body">
+ Contains a list of the custom build
+ types. See <a href=
+ "MakeProjectCreator.html#Custom_Types" class=
+ "XRef">Custom Types</a> for more details.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%rm%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">cwd</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific command
- to delete a file.</p>
+ <p class="Tbl-Body">
+ The full current working
+ directory.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%rmdir%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">forcount</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific recursive
- directory delete command.</p>
+ <p class="Tbl-Body">
+ This only has a value within the
+ context of a <em class="Code">foreach</em> and provides a
+ 1 based count, by default, of the index of the elements
+ in <em class="Code">foreach</em>.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%slash%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">guid</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A platform non-specific directory
- separator.</p>
+ <p class="Tbl-Body">
+ This value is implemented by the VC7
+ and WIX project creator modules. It returns a <em class=
+ "Code">guid</em> value based on the project that is
+ usable within VC7, VC71, VC8, VC9, VC10 and WIX project
+ files.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%temporary%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">language</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">A temporary file name. The
- generated temporary file name contains no directory
- portion and is the same for each use within the same
- variable setting.</p>
+ <p class="Tbl-Body">
+ This value is implemented by the VC7
+ and Make project creator modules. It returns the current
+ language setting for the project.
+ </p>
</td>
</tr>
<tr>
- <td rowspan="1" colspan="2">
- <p class="TblCode">The following variables will
- be set to the known extension for Windows based
- project types and empty on non-Windows based
- project types.</p>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">make_file_name</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This value is implemented by the VC6
+ and EM3 project creator modules. It returns the project
+ name with the make file extension that corresponds to the
+ particular project type.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%bat%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">project_file</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The extension for batch
- files.</p>
+ <p class="Tbl-Body">
+ This variable contains the name of
+ the output file for the current project being
+ generated.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%cmd%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">project_name</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The extension for command
- files.</p>
+ <p class="Tbl-Body">
+ This variable contains the name of
+ the current project being generated.
+ </p>
</td>
</tr>
<tr>
<td rowspan="1" colspan="1">
- <p class="TblCode"><em class=
- "TableCode">&lt;%exe%&gt;</em></p>
+ <p class="Tbl-Body">
+ <em class="TableCode">rcdir</em>
+ </p>
</td>
<td rowspan="1" colspan="1">
- <p class="Tbl-Body">The extension for executable
- files.</p>
+ <p class="Tbl-Body">
+ This value is implemented by the
+ BMake project creator module. It returns a semicolon
+ separated list of directories taken from each value in
+ the <em class="Code">Resource_Files</em> list.
+ </p>
</td>
</tr>
- </table>
- </li>
- </ul>
- </div>
- </div>
- </div>
-
- <div>
- <a name="TheFeatureFile" id="TheFeatureFile"></a>
-
- <h5 class="Head4">The Feature File</h5>
-
- <ul>
- <li class="BodyNoLead">The term feature, as used by MPC,
- describes different concepts or external software that a project
- may require in order to build properly. The feature file
- determines which features are enabled or disabled which has a
- direct effect on whether or not MPC generates a project.</li>
-
- <li class="Body">It supports the standard comment (<em class=
- "Code">//</em> ) and assignment of numbers to feature names.
- These feature names will correspond to values given to the
- <em class="Code">requires</em> and <em class="Code">avoids</em>
- keywords in mpc files.</li>
-
- <li class="Body">If a feature is not listed in the feature file
- or is listed with a boolean value of true (1), that feature is
- enabled. If a feature is listed and has a boolean value of false
- (0), that feature is disabled.</li>
-
- <li class="Body">If a feature name is listed in the <em class=
- "Code">requires</em> value for a particular project and that
- feature is enabled, that project will be generated. If the
- feature is not enabled, the project will not be generated.</li>
-
- <li class="Body">The opposite holds true for the <em class=
- "Code">avoids</em> keyword. If a feature name is listed in the
- <em class="Code">avoids</em> value for a project and the feature
- is disabled, that project will be generated. If the feature is
- enabled, the project will not be generated.</li>
-
- <li class="Body">The global feature file for MPC contains the
- following values.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">boost = 0</p>
-
- <p class="Code">bzip2 = 0</p>
-
- <p class="Code">java = 0</p>
-
- <p class="Code">mfc = 0</p>
-
- <p class="Code">python = 0</p>
-
- <p class="Code">qt = 0</p>
-
- <p class="Code">rpc = 0</p>
-
- <p class="Code">swig_java = 0</p>
-
- <p class="Code">swig_perl = 0</p>
-
- <p class="Code">swig_php = 0</p>
-
- <p class="Code">swig_python = 0</p>
-
- <p class="Code">swig_ruby = 0</p>
-
- <p class="Code">swig_tcl = 0</p>
-
- <p class="Code">uses_wchar = 0</p>
-
- <p class="Code">xalan = 0</p>
-
- <p class="Code">xerces = 0</p>
-
- <p class="Code">xerces2 = 0</p>
-
- <p class="Code">xerces3 = 0</p>
-
- <p class="Code">ziparchive = 0</p>
-
- <p class="Code">zlib = 0</p>
-
- <p class="Code">zzip = 0</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">In the above contents, all of these features are
- disabled for each project generated. If these values do not suit
- your needs, then you must do one of the following:</li>
-
- <li class="BodyNoLead">
- <ul>
- <li>Create a project specific feature file in the <em class=
- "Code">config</em> directory (ex., <em class=
- "Code">make.features</em> for the <em class="Code">make</em>
- project type) to set features for a particular project
- type.</li>
-
- <li>Create a <em class="Code">default.features</em> file in
- the <em class="Code">config</em> directory that contains the
- feature set you need. These will be applied to all project
- types.</li>
-
- <li>Create a feature file anywhere you like with the features
- you want and use the <em class="Code">-feature_file</em>
- option to specify the location.</li>
-
- <li>Use the <em class="Code">-features</em> option to
- dynamically modify the feature settings.</li>
- </ul>
- </li>
-
- <li class="Body">Generated projects will have a combination of
- features specified in the <em class="Code">global.features</em>
- file as well as in your feature file. Therefore, if a feature is
- disabled in the global file and you want to enable it, you must
- explicitly enable it in your feature file.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Feature Projects</h5>
-
- <ul>
- <li class="BodyNoLead">A feature project contains information as
- a project would, but can only be a base project and will only be
- added to a sub project if the features that it requires are
- enabled or the features that it avoids are disabled.</li>
-
- <li class="Body">A feature definition requires at least one
- feature name. A name by itself specifies that the feature must be
- enabled. A &rsquo;!&rsquo; in front of the feature name indicates
- that the feature must be disabled. There may be more than one
- comma separated feature listed between the parenthesis.</li>
-
- <li class="Body">The following example show how to declare a
- feature project.</li>
-
- <li class="Body">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">// ziparchive.mpb</p>
-
- <p class="Code">feature(ziparchive) {</p>
-
- <p class="Code">&nbsp;&nbsp;includes += $(ZIPARCHIVEROOT)</p>
-
- <p class="Code">&nbsp;&nbsp;libpaths +=
- $(ZIPARCHIVEROOT)/lib</p>
-
- <p class="Code">&nbsp;&nbsp;libs &nbsp;&nbsp;&nbsp;&nbsp;+=
- ziparch</p>
-
- <p class="Code">}</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">With this example, any project that inherits
- from the <em class="Code">ziparchive</em> base feature project
- will contain the project information only if the <em class=
- "Code">ziparchive</em> feature is enabled.</li>
- </ul>
- </div>
- </div>
-
- <div>
- <h4 class="Head3">Defaults</h4>
-
- <ul>
- <li class="BodyNoLead">MPC has been designed to minimize the amount
- of maintenance that goes into keeping build tool files up-to-date
- with the project. If your source code is organized <em class=
- "Emphasis">properly</em>, the maintenance of your mpc files should
- be minimal.</li>
-
- <li class="Body">With the use of inheritance and proper code
- arrangement, an mpc file for a TAO related project may be as simple
- as:</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">project: taoserver {</p>
-
- <p class="Code">}</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">This project definition could be used to generate
- a project for a TAO server with multiple idl, header and source
- files.</li>
-
- <li class="Body">The idea of <em class="Emphasis">proper</em>
- source layout is basically summarized as <em class="Emphasis">one
- directory per binary target.</em> If only the files that pertain to
- a single target are located in the directory with the mpc file,
- then the MPC defaults will satisfy most project needs.</li>
-
- <li class="Body">Of course, it will not always be possible or
- desirable to organize your project code in this fashion, so all
- defaulting behavior can be overridden. The next sections describe
- the default behaviors of MPC and how to override them.</li>
- </ul>
-
- <div>
- <h5 class="Head4">Source Files</h5>
-
- <ul>
- <li class="BodyNoLead">New source files are added and others are
- removed quite often in a developing project. If the <em class=
- "Code">Source_Files</em> component is left out of an mpc file,
- then MPC will assume that any file matching one of the <em class=
- "Emphasis">source</em> extensions is to be included in the
- project. For most project types, the source extensions are:
- <em class="Code">.cpp</em>, <em class="Code">.cxx</em>,
- <em class="Code">.cc</em>, <em class="Code">.c</em> and
- <em class="Code">.C</em>. Only the following extensions are
- considered source extensions: <em class="Code">.cpp</em>,
- <em class="Code">.cxx</em> and <em class="Code">.c</em> for the
- <em class="Code">em3</em> and <em class="Code">vc6</em> project
- types as eMbedded Visual C++ and Visual C++ 6.0 do not understand
- files with the <em class="Code">.cc</em> or <em class=
- "Code">.C</em> extension.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Template Files</h5>
-
- <ul>
- <li class="BodyNoLead">MPC assumes that any file matching one of
- the <em class="Emphasis">template</em> extensions is to be
- included in the project if the <em class=
- "Code">Template_Files</em> component is left out of an mpc file.
- For most project types, the template extensions are: <em class=
- "Code">_T.cpp</em>, <em class="Code">_T.cxx</em>, <em class=
- "Code">_T.cc</em>, <em class="Code">_T.c</em>, and <em class=
- "Code">_T.C</em>. However, only the <em class="Code">_T.cpp</em>
- and <em class="Code">_T.cxx</em> extensions are considered
- template extensions for the <em class="Code">em3</em> and
- <em class="Code">vc6</em> project types.</li>
-
- <li class="Body">If the <em class="Code">Source_Files</em>
- component is defaulted, and a file is explicitly listed in the
- Template_Files section that happens to appear to MPC as a source
- file (i.e., has a source file extension, but does not have
- <em class="Code">_T</em> directly before it), MPC will
- automatically exclude it from the <em class=
- "Code">Source_Files</em> component.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Inline Files</h5>
-
- <ul>
- <li class="BodyNoLead">As with source files, the <em class=
- "Code">Inline_Files</em> component can be left out of an mpc file
- to allow it to generate defaults. Files that match the <em class=
- "Code">.i</em> and <em class="Code">.inl</em> extensions are
- considered inline files.</li>
-
- <li class="Body">The <em class="Code">Inline_Files</em> component
- has a special interaction with the <em class=
- "Code">Source_Files</em> component. If the <em class=
- "Code">Source_Files</em> component has files listed and the
- <em class="Code">Inline_Files</em> component is omitted, then
- each source file is <em class="Emphasis">matched</em> to an
- inline file. If the matching inline file is found or would be
- generated from a custom command, it is added to the <em class=
- "Code">Inline_Files</em> component list.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Header Files</h5>
-
- <ul>
- <li class="BodyNoLead">As with source files, the <em class=
- "Code">Header_Files</em> component can be left out of an mpc file
- to allow it to generate defaults. Files that match the <em class=
- "Code">.h</em>, <em class="Code">.hpp</em>, <em class=
- "Code">.hxx</em>, and <em class="Code">.hh</em> extensions are
- considered header files.</li>
-
- <li class="Body">The <em class="Code">Header_Files</em> component
- has a special interaction with the <em class=
- "Code">Source_Files</em> component. If the <em class=
- "Code">Source_Files</em> component has files listed and the
- <em class="Code">Header_Files</em> component is omitted, then
- each source file is <em class="Emphasis">matched</em> to a header
- file. If the matching header file is found or would be generated
- from a custom command, then it is added to the <em class=
- "Code">Header_Files</em> component list.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Documentation Files</h5>
-
- <ul>
- <li class="BodyNoLead">The <em class=
- "Code">Documentation_Files</em> component, if omitted, will
- default to all files that end in the following: <em class=
- "Code">README</em>, <em class="Code">readme</em>, <em class=
- "Code">.doc</em>, <em class="Code">.html</em> and <em class=
- "Code">.txt</em>.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Resource Files</h5>
-
- <ul>
- <li class="BodyNoLead">The <em class="Code">Resource_Files</em>
- component, if omitted, will default to only the files that end in
- <em class="Code">.rc</em> and are similar to the name of the
- project. For example, if a directory contains three <em class=
- "Code">.rc</em> files and the project name is <em class=
- "Code">foo</em>, only the <em class="Code">.rc</em> files that
- contain the word <em class="Code">foo</em> will automatically be
- added to the <em class="Code">Resource_Files</em> component
- list.</li>
- </ul>
- </div>
-
- <div>
- <h5 class="Head4">Custom Defined Files</h5>
-
- <ul>
- <li class="BodyNoLead">The <em class="Code">Custom Defined
- Files</em> components have a special interaction with the
- <em class="Code">Source_Files</em> component. If the custom
- command generates source files and has the <em class=
- "Code">automatic_out</em> setting set to 1, they will
- automatically be added to the <em class="Code">Source_Files</em>
- component list. If any of the files listed in the <em class=
- "Code">Source_Files</em> components list match any of the
- generated source file names, then none of the generated source
- file names will be automatically added to the <em class=
- "Code">Source_Files</em> components list.</li>
- </ul>
- </div>
-
- <div>
- <a name="ExampleMPCFile" id="ExampleMPCFile"></a>
-
- <h5 class="Head4">Example MPC File</h5>
-
- <ul>
- <li class="BodyNoLead">The example below uses the directory
- contents of <em class=
- "Code">$TAO_ROOT/orbsvcs/performance-tests/RTEvent/lib</em> to
- illustrate the simplicity of mpc files:</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">Auto_Disconnect.cpp Loopback_Supplier.h
- RTEC_Initializer.cpp</p>
-
- <p class="Code">Auto_Disconnect.h Low_Priority_Setup.cpp
- RTEC_Initializer.h</p>
-
- <p class="Code">Auto_Disconnect.inl Low_Priority_Setup.h
- rtec_perf_export.h</p>
-
- <p class="Code">Auto_Functor.cpp Low_Priority_Setup.inl
- RTEC_Perf.mpc</p>
-
- <p class="Code">Auto_Functor.h Makefile RTPOA_Setup.cpp</p>
-
- <p class="Code">Auto_Functor.inl ORB_Holder.cpp
- RTPOA_Setup.h</p>
-
- <p class="Code">Client_Group.cpp ORB_Holder.h
- RTPOA_Setup.inl</p>
-
- <p class="Code">Client_Group.h ORB_Holder.inl
- RTServer_Setup.cpp</p>
-
- <p class="Code">Client_Group.inl ORB_Shutdown.cpp
- RTServer_Setup.h</p>
-
- <p class="Code">Client_Options.cpp ORB_Shutdown.h
- RTServer_Setup.inl</p>
-
- <p class="Code">Client_Options.h ORB_Shutdown.inl
- Send_Task.cpp</p>
-
- <p class="Code">Client_Pair.cpp ORB_Task_Activator.cpp
- Send_Task.h</p>
-
- <p class="Code">Client_Pair.h ORB_Task_Activator.h
- Send_Task_Stopper.cpp</p>
-
- <p class="Code">Client_Pair.inl ORB_Task_Activator.inl
- Send_Task_Stopper.h</p>
-
- <p class="Code">Consumer.cpp ORB_Task.cpp
- Send_Task_Stopper.inl</p>
-
- <p class="Code">Consumer.h ORB_Task.h Servant_var.cpp</p>
-
- <p class="Code">Control.cpp ORB_Task.inl Servant_var.h</p>
-
- <p class="Code">Control.h Peer_Base.cpp Servant_var.inl</p>
-
- <p class="Code">EC_Destroyer.cpp Peer_Base.h Shutdown.cpp</p>
-
- <p class="Code">EC_Destroyer.h PriorityBand_Setup.cpp
- Shutdown.h</p>
-
- <p class="Code">EC_Destroyer.inl PriorityBand_Setup.h
- Shutdown.inl</p>
-
- <p class="Code">Federated_Test.idl PriorityBand_Setup.inl
- Supplier.cpp</p>
- <p class="Code">Implicit_Deactivator.cpp RIR_Narrow.cpp
- Supplier.h</p>
-
- <p class="Code">Implicit_Deactivator.h RIR_Narrow.h
- SyncScope_Setup.cpp</p>
-
- <p class="Code">Implicit_Deactivator.inl RT_Class.cpp
- SyncScope_Setup.h</p>
-
- <p class="Code">Loopback_Consumer.cpp RT_Class.h
- SyncScope_Setup.inl</p>
-
- <p class="Code">Loopback_Consumer.h RT_Class.inl
- TAO_RTEC_Perf.dsp</p>
-
- <p class="Code">Loopback.cpp RTClient_Setup.cpp
- TAO_RTEC_Perf.dsw</p>
-
- <p class="Code">Loopback.h RTClient_Setup.h
- Task_Activator.cpp</p>
-
- <p class="Code">Loopback_Pair.cpp RTClient_Setup.inl
- Task_Activator.h</p>
-
- <p class="Code">Loopback_Pair.h RTCORBA_Setup.cpp
- Task_Activator.inl</p>
-
- <p class="Code">Loopback_Pair.inl RTCORBA_Setup.h</p>
-
- <p class="Code">Loopback_Supplier.cpp RTCORBA_Setup.inl</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">The following mpc file (<em class=
- "Code">RTEC_Perf.mpc</em> ) shows the simple and small number of
- lines required to generate usable build tool project files.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">project(RTEC_Perf): strategies, rtcorbaevent,
- minimum_corba {</p>
-
- <p class="Code">&nbsp;&nbsp;sharedname = TAO_RTEC_Perf</p>
-
- <p class="Code">&nbsp;&nbsp;idlflags +=
- -Wb,export_macro=TAO_RTEC_Perf_Export \</p>
-
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Wb,export_include=rtec_perf_export.h</p>
-
- <p class="Code">&nbsp;&nbsp;dllflags +=
- TAO_RTEC_PERF_BUILD_DLL</p>
-
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&nbsp;&nbsp;Template_Files {</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Auto_Disconnect.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Auto_Functor.cpp</p>
-
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;Low_Priority_Setup.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;RIR_Narrow.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Servant_var.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Shutdown.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;Task_Activator.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;}</p>
-
- <p class="Code">}</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">A line-by-line explanation of the example mpc
- file is listed below.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">project(RTEC_Perf): strategies, rtcorbaevent,
- minimum_corba {</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">The first line declares a project named
- <em class="Code">RTEC_Perf</em> that inherits from the base
- projects listed after the colon.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">sharedname = TAO_RTEC_Perf</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Line two determines that the project is a
- library and the library name is <em class=
- "Code">TAO_RTEC_Perf</em>.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">idlflags +=
- -Wb,export_macro=TAO_RTEC_Perf_Export \</p>
-
- <p class="Code">-Wb,export_include=rtec_perf_export.h</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Lines three and four add to the flags passed to
- the IDL compiler when processing the idl files.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">dllflags += TAO_RTEC_PERF_BUILD_DLL</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Line five adds <em class=
- "Code">TAO_RTEC_PERF_BUILD_DLL</em> to the <em class=
- "Code">dllflags</em>, which defines a macro that is used by the
- <em class="Code">rtec_perf_export.h</em> header file.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">Template_Files {</p>
-
- <p class="Code">&nbsp;&nbsp;Auto_Disconnect.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;Auto_Functor.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;Low_Priority_Setup.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;RIR_Narrow.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;Servant_var.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;Shutdown.cpp</p>
-
- <p class="Code">&nbsp;&nbsp;Task_Activator.cpp</p>
-
- <p class="Code">}</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Lines 7 through 15 name the listed cpp files as
- part of the <em class="Code">Template_Files</em>.</li>
-
- <li class="Body">You may have noticed that there isn&rsquo;t much
- to the file above. With the default behaviors that are built into
- MPC, there does not need to be. We rely on the defaults to
- determine the values of <em class="Code">IDL_Files</em>,
- <em class="Code">Source_Files</em>, <em class=
- "Code">Inline_Files</em> , and <em class=
- "Code">Header_Files</em>. Since the template files do not match
- the MPC built-in defaults, we must explicitly list them. We also
- rely on inheritance to get many of the TAO-related options.</li>
- </ul>
- </div>
- </div>
- </div>
-
- <div>
- <h3 class="Head2">Adding a New Type</h3>
- <hr>
-
- <ul>
- <li class="Body">If MPC does not support a particular build tool, you
- may want to consider adding a new project type. For instance, support
- could be added to MPC for Boost Jam, Xcode and many others. To do so
- will require knowledge of the MPC input files, as well as Object
- Oriented Perl.</li>
- </ul>
-
- <div>
- <h4 class="Head3">Input File Syntax</h4>
-
- <ul>
- <li class="BodyNoLead">This section describes the syntax of the
- files that are used during project generation.</li>
- </ul>
-
- <div>
- <h5 class="Head4"><a name="MPD Syntax"></a>Template Files
- (mpd)</h5>
-
- <ul>
- <li class="BodyNoLead">Template files make up the bulk of what
- MPC puts into each generated project file. They provide the plain
- text and the layout of the data provided by the mpc files, using
- various template directives.</li>
-
- <li class="Body">Template directives are declared using a
- <em class="Code">&lt;% %&gt;</em> construct. This construct is
- used to create if statements, for loops and to access variables.
- One thing to note is that any text, including white space, that
- is not enclosed within <em class="Code">&lt;% %&gt;</em> is left
- untouched and is passed directly into the generated project
- file.</li>
-
- <li class="Body">An <em class="Code">if</em> statement can appear
- on a single line or it can span multiple lines. For example, the
- following line:</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&lt;%if(exename)%&gt;BIN =
- &lt;%exename%&gt;&lt;%else%&gt;LIB =
- &lt;%sharedname%&gt;&lt;%endif%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">is equivalent to:</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&lt;%if(exename)%&gt;</p>
-
- <p class="Code">BIN = &lt;%exename%&gt;</p>
-
- <p class="Code">&lt;%else%&gt;</p>
-
- <p class="Code">LIB = &lt;%sharedname%&gt;</p>
-
- <p class="Code">&lt;%endif%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body"><a name="foreach syntax"></a> A <em class=
- "Code">foreach</em> statement can also appear on a single line or
- can span multiple lines. As described below in the keywords
- section, the <em class="Code">foreach</em> statement evaluates
- the variable in a space-separated list context.</li>
-
- <li class="Body">There are a couple of ways to write a <em class=
- "Code">foreach</em> loop. The first and preferred way is to name
- the loop variable and then list each variable to be
- evaluated.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">FILES=&lt;%foreach(fvar, idl_files source_files
- header_files)%&gt; &lt;%fvar%&gt;&lt;%endfor%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">The second way is to let the <em class=
- "Code">foreach</em> statement determine the loop variable. With
- this style, each value can be accessed via the first variable
- name passed to the <em class="Code">foreach</em> with the
- trailing &rsquo;<em class="Code">s</em> &rsquo; removed.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">FILES=&lt;%foreach(idl_files source_files
- header_files)%&gt; &lt;%idl_file%&gt;&lt;%endfor%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Note that the <em class=
- "Code">&lt;%idl_file%&gt;</em> variable will contain each
- individual value of the <em class="Code">idl_files</em>,
- <em class="Code">source_files</em> and <em class=
- "Code">header_files</em> list. If the variable in the <em class=
- "Code">foreach</em> does not end in &rsquo;<em class=
- "Code">s</em> &rsquo;, the variable of the same name within the
- <em class="Code">foreach</em> will contain each individual value,
- e.g.,</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&lt;%foreach(filelist)%&gt;
- &lt;%filelist%&gt;&lt;%endfor%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">The following table lists keywords that can
- appear in template files.</li>
-
- <li style="list-style: none">
- <a name="38037"></a>
-
- <h6 class="NumberedTableTitle">Template File Keywords</h6>
-
- <table border="1" summary="Template File Keywords">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Keyword</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">basename</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Evaluates the variable name and
- removes the directory portion from that value.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">basenoextension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is similar to <em class=
- "Code">basename</em> except that the extension is also
- removed from the variable name value.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">comment</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The value passed to comment is
- ignored and can be any set of characters, except a new
- line or a closing parenthesis.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">compares</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns true if the
- variable value (first parameter) is equal to the string
- value (second parameter).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">contains</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns true if the
- variable value (first parameter) contains the regular
- expression (second parameter).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">deref</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Dereference the variable passed as
- a parameter, treating its value as another variable
- name and returning that variable's value.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dirname</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Evaluates the variable name and
- removes the <em class="Code">basename</em> from that
- value.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">duplicate_index</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns a number based
- on the number of times a file with the same name (but
- different directory) is seen within a project. The
- function returns false upon the first occurrence of a
- file.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">else</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with the <em class=
- "Code">if</em> statement. An <em class="Code">else</em>
- block will be evaluated if the statement does not
- evaluate to true.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">endfor</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with <em class=
- "Code">foreach</em>. This ends <em class=
- "Code">foreach</em> block.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">endif</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with the <em class=
- "Code">if</em> statement. This ends an <em class=
- "Code">if</em> or <em class="Code">if/else</em>
- block.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">ends_with</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns true if the
- variable value (first parameter) ends with the regular
- expression (second parameter).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">eval</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is similar to eval in perl. The
- template variable passed to this function will be
- evaluated within the context of the current template.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">extensions</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Returns a list of extensions based on
- the component name parameter (e.g., source_files,
- header_files, etc.)</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">flag_overrides</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is directly related to
- overriding the project-wide settings in an mpc file. It
- takes two variable names that are comma separated. The
- first corresponds to a file name and the second is any
- variable name.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">foreach</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The given variable names are
- evaluated in a list context which is space separated.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">forfirst</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with <em class=
- "Code">foreach</em>. The literal value passed to
- <em class="Code">forfirst</em> will be placed on the
- first iteration of <em class="Code">foreach</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">forlast</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with <em class=
- "Code">foreach</em>. The literal value passed to
- <em class="Code">forlast</em> will be placed on the last
- iteration of <em class="Code">foreach</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">fornotfirst</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with <em class=
- "Code">foreach</em>. The literal value passed to
- <em class="Code">fornotfirst</em> will be placed on each
- iteration of <em class="Code">foreach</em> except for the
- first.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">fornotlast</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used with <em class=
- "Code">foreach</em>. The literal value passed to
- <em class="Code">fornotlast</em> will be placed on each
- iteration of <em class="Code">foreach</em> except for the
- last.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">full_path</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Returns full path of the value of the
- variable name passed a the parameter.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">has_extension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Returns true is the variable value
- has a file extension.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">if</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Used to determine if a variable is
- defined. The not operator (<em class="Code">!</em> ) can
- be used to invert the if check. This construct will only
- check for values defined within an mpc or mpt file.
- Default values (even those implemented by the project
- creators) are not considered in the <em class=
- "Code">if</em> statement.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">keyname_used</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function is used to associate a
- key with a variable value. If the key has been associated
- with a variable value more than once, either through
- physical repetition of the key in the template or through
- evaluation of a foreach context, the count of association
- will be appended to the output.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">lc</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Return the given variable value in
- all lower case characters.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">marker</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is directly related to the
- <em class="Code">verbatim</em> keyword from the mpc
- syntax. This can be used to designate markers within a
- template. Ex. <em class=
- "Code">&lt;%marker(local)%&gt;</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">multiple</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns true if the
- array parameter contains multiple values.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">noextension</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Evaluates the variable name value as
- a file name and removes the extension from that value
- including the period.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">normalize</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Convert spaces, dashes, slashes,
- dollar signs, parenthesis and dots in the given variable
- value to underscores.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">remove_from</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function will remove a file in a
- component list. It requires three parameters. The first
- parameter is a component name (e.g., Source_Files), the
- second parameter is a regular expression pattern and
- the third parameter is a project or template variable
- name. The fourth and optional parameter allows you to
- alter the project or template variable value by
- removing the end matching portion. If the value of
- the project or template variable (i.e., parameter
- three) after being modified by parameter four and
- having the regular expression pattern (i.e.,
- parameter two) appended to it matches any value
- within the compent list (named by parameter one), it
- will be removed from that component list and passed
- back.
- any </p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">reverse</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function reverses the order of
- the array parameter values.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">scope</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This is used to set the scope of
- execution of a function that will operate on the template
- output. A scope is begun by passing "enter" as the first
- parameter and a function name as the second parameter.
- Currently, the only function name supported is "escape".
- The third parameter specifies a string on which the
- function will operate. Any template text that matches the
- string parameter while within this scope will be
- transformed by the function parameter. A scope is then
- ended by passing "leave".</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">set</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function is used to set or
- create a template variable. This function takes two
- parameters; the first is the template variable name
- and the second is the variable value.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">sort</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function sorts the array
- parameter values.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">starts_with</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns true if the
- variable value (first parameter) starts with the regular
- expression (second parameter).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">transdir</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Replaces values within the directory
- portion of a variable value with something that can be
- used as a relative path. The current working directory is
- removed and ".." is replaced with "dotdot".</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">translate_vars</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The first parameter to this function
- is the name of a variable. The second, optional,
- parameter is the operating system for which the
- project is being generated (e.g., linux, solaris,
- win32, etc.) It replaces $(...) found within the
- value of the variable with the equivalent environment
- variable reference based on the operating system.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">uc</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Return the given variable value in
- all upper case characters.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">ucw</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Return the given variable value with
- the first letter of each word in upper case. Words are
- separated by spaces or underscores.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">uniq</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This function returns the unique set
- of the array parameter values.</p>
- </td>
- </tr>
- </table>
- </li>
-
- <li class="Body">The following table lists special names that can
- be used as variables in some template files. The variables listed
- in the <a href=
- "MakeProjectCreator.html#Common%20Pseudo%20Variables" class=
- "XRef">Common Pseudo Variables</a> table can be used as well
- (except for <em class="Code">&lt;%temporary%&gt;</em>).</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Special Values used in Template
- Files</h6>
-
- <table border="1" summary=
- "Special Values used in Template Files">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Value</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">am_version</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Implemented by the Automake project
- creator module, converts the <em class=
- "Code">version</em> setting into a suitable value for
- automake.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">ciao</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Implemented by the GNUACE project
- creator module, specifies that the project uses CIAO.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">compilers</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Implemented by the Make project
- creator module, provides the compiler name based on the
- current project language.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">cppdir</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the
- BMake project creator module. It returns a semicolon
- separated list of directories taken from each value in
- the <em class="Code">Source_Files</em> list.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">custom_types</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Contains a list of the custom build
- types. See <a href=
- "MakeProjectCreator.html#Custom%20Types" class=
- "XRef">Custom Types</a> for more details.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">cwd</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The full current working
- directory.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">forcount</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This only has a value within the
- context of a <em class="Code">foreach</em> and provides a
- 1 based count, by default, of the index of the elements
- in <em class="Code">foreach</em>.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">guid</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the VC7
- and WIX project creator modules. It returns a <em class=
- "Code">guid</em> value based on the project that is
- usable within VC7, VC71, VC8, VC9, VC10 and WIX project
- files.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">language</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the VC7
- and Make project creator modules. It returns the current
- language setting for the project.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">make_file_name</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the VC6
- and EM3 project creator modules. It returns the project
- name with the make file extension that corresponds to the
- particular project type.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">project_file</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This variable contains the name of
- the output file for the current project being
- generated.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">project_name</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_directory</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This variable contains the name of
- the current project being generated.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This value is implemented by the WIX
+ project creator module. It converts the variable portion
+ of the binary output directory (either <em class=
+ "Code">exeout</em>, <em class="Code">dllout</em>, or
+ <em class="Code">libout</em>) to a suitable value for
+ WIX.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">rcdir</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">tao</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the
- BMake project creator module. It returns a semicolon
- separated list of directories taken from each value in
- the <em class="Code">Resource_Files</em> list.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ Implemented by the GNUACE project
+ creator module, specifies that the project uses TAO.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_directory</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">vcversion</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the WIX
- project creator module. It converts the variable portion
- of the binary output directory (either <em class=
- "Code">exeout</em>, <em class="Code">dllout</em>, or
- <em class="Code">libout</em>) to a suitable value for
- WIX.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This value is implemented by the
+ VC7ProjectCreator. It returns the version number of the
+ type of project being generated. 7.00 is return for vc7,
+ 7.10 is return for vc71 and 8.00 is returned for vc8,
+ 9.00 is returned for vc9, 10.00 is returned for vc10.
+ </p>
+ </td>
+ </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">tao</em></p>
- </td>
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class="TableCode">vpath</em>
+ </p>
+ </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">Implemented by the GNUACE project
- creator module, specifies that the project uses TAO.</p>
- </td>
- </tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ This value is implemented by the
+ GNUACEProjectCreator. It returns a value, based on the
+ location of the source files, that specifies the
+ <em class="Code">VPATH</em> setting for GNU Make.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">vcversion</em></p>
- </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the
- VC7ProjectCreator. It returns the version number of the
- type of project being generated. 7.00 is return for vc7,
- 7.10 is return for vc71 and 8.00 is returned for vc8,
- 9.00 is returned for vc9, 10.00 is returned for vc10.</p>
- </td>
- </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class="TableCode">vpath</em></p>
- </td>
+ <p class="Body">
+ <h6 class="Head5">
+ <a name="Document_Template_Script"></a>
+ Template Variable Documentation
+ </h6>
+ </p>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">This value is implemented by the
- GNUACEProjectCreator. It returns a value, based on the
- location of the source files, that specifies the
- <em class="Code">VPATH</em> setting for GNU Make.</p>
- </td>
- </tr>
- </table>
- </li>
- </ul>
-
- <ul>
- <li class="Body">
- <h6 class="Head5"><a name="Document Template Script"></a>
- Template Variable Documentation</h6>
- </li>
-
- <li class="Body">Template variables used within the MPC templates
- are numerous and vary from template to template; there are far
- too many to include in this document. However, you can generate
- an HTML document containing all of the template variables used
- within a template using the <em class=
+ <p class="Body">
+ Template variables used within the MPC templates
+ are numerous and vary from template to template; there are far
+ too many to include in this document. However, you can generate
+ an HTML document containing all of the template variables used
+ within a template using the <em class=
"Code">document_template.pl</em> script found in the <em class=
"Code">devtools</em> directory under the MPC root directory. You
- may find that some templates and individual template variables
- are well documented and, unfortunately, some are not.</li>
+ may find that some templates and individual template variables
+ are well documented and, unfortunately, some are not.
+ </p>
+
+ <p class="Body">
+ The script will generate documentation for an
+ individual template file. The usage is as follows:
+ </p>
- <li class="Body">The script will generate documentation for an
- individual template file. The usage is as follows:</li>
+ <blockquote>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Code">document_template.pl v1.3</p>
- <p class="Code">document_template.pl v1.3</p>
+ <p class="Code">
+ Usage: document_template.pl &lt;template&gt;
+ [&lt;html output&gt; [language]]
+ </p>
- <p class="Code">Usage: document_template.pl &lt;template&gt;
- [&lt;html output&gt; [language]]</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">
+ html output - This defaults to the name of the
+ template file with the .mpd
+ </p>
- <p class="Code">html output - This defaults to the name of the
- template file with the .mpd</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension replaced with
+ .html.
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension replaced with
- .html.</p>
+ <p class="Code">
+ language &nbsp;&nbsp;&nbsp;- This defaults to
+ the language for which the template is designed.
+ </p>
- <p class="Code">language &nbsp;&nbsp;&nbsp;- This defaults to
- the language for which the template is designed.</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;It can be any of the valid
+ language settings for MPC:
+ </p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;It can be any of the valid
- language settings for MPC:</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplusplus csharp java
+ vb
+ </p>
+ </blockquote>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cplusplus csharp java
- vb</p>
- </li>
- </ul>
- <div>
- <a name="Custom Types"></a>
+ <div>
+ <a name="Custom_Types"></a>
- <h6 class="Head5">Custom Types</h6>
+ <h6 class="Head5">Custom Types</h6>
- <ul>
- <li class="BodyNoLead">To support multiple custom build types,
- a special keyword was introduced. The <em class=
+ <p class="BodyNoLead">
+ To support multiple custom build types,
+ a special keyword was introduced. The <em class=
"Code">custom_types</em> keyword is used to access the list of
- custom types defined by the user. In a <em class=
+ custom types defined by the user. In a <em class=
"Code">foreach</em> context, each custom type can be accessed
- through the <em class="Code">custom_type</em> keyword.</li>
+ through the <em class="Code">custom_type</em> keyword.
+ </p>
- <li class="Body">A variety of information is available from
- each <em class="Code">custom_type</em> through the <em class=
+ <p class="Body">
+ A variety of information is available from
+ each <em class="Code">custom_type</em> through the <em class=
"Code">-&gt;</em> operator. The input files, input extensions,
- command, command output option, command flags, and output file
- directory are all accessible through the field names that
- correspond to the particular type.</li>
-
- <li class="Body">The input files associated with the custom
- type are accessed through <em class=
+ command, command output option, command flags, and output file
+ directory are all accessible through the field names that
+ correspond to the particular type.
+ </p>
+
+ <p class="Body">
+ The input files associated with the custom
+ type are accessed through <em class=
"Code">custom_type-&gt;input_files</em>. Each input file has a
- set of output files associated with it which can be accessed in
- a <em class="Code">foreach</em> context through c<em class=
+ set of output files associated with it which can be accessed in
+ a <em class="Code">foreach</em> context through c<em class=
"Code">ustom_type-&gt;input_file-&gt;output_files</em>. The
- custom type fields are those listed in the <a href=
- "MakeProjectCreator.html#32899" class="XRef">Define_Custom
- Keywords</a> table as well as those listed in the following
- table.</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Custom Type Fields</h6>
-
- <table border="1" summary="Custom Type Fields">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Value</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">dependencies</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The files on which the processing
- of the custom input file depends.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">gendir</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The output directory associated
- with a particular input file. This field has no meaning
- when accessed directly through the <em class=
+ custom type fields are those listed in the <a href=
+ "MakeProjectCreator.html#32899" class="XRef">
+ Define_Custom
+ Keywords
+ </a> table as well as those listed in the following
+ table.
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">Custom Type Fields</h6>
+
+ <table border="1" summary="Custom Type Fields">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Value</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">dependencies</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The files on which the processing
+ of the custom input file depends.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">gendir</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The output directory associated
+ with a particular input file. This field has no meaning
+ when accessed directly through the <em class=
"Code">custom_type</em>. It should always be used
- within the context of a <em class=
+ within the context of a <em class=
"Code">flag_overrides</em> (see <a href=
- "MakeProjectCreator.html#38037" class="XRef">Template
- File Keywords</a>).</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">input_files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The input files associated with the
- custom type.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">inputexts</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The input file extensions
- associated with the custom type.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">non_source_output_files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">All output files generated from the
- custom input file that are not considered source code
- files by MPC.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">output_files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">All output files generated from the
- custom input file.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">source_output_files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">All output files generated from the
- custom input file that are considered source code files
- by MPC.</p>
- </td>
- </tr>
- </table>
- </li>
-
- <li class="Body">The example below, which creates generic
- makefile rules for building custom input files, shows basic use
- of the custom type and the various fields that can be accessed.
- The main limitation with the <em class="Code">custom_types</em>
- keyword, as can be seen below, is that the <em class=
+ "MakeProjectCreator.html#38037" class="XRef">
+ Template
+ File Keywords
+ </a>).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">input_files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The input files associated with the
+ custom type.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">inputexts</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The input file extensions
+ associated with the custom type.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">non_source_output_files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ All output files generated from the
+ custom input file that are not considered source code
+ files by MPC.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">output_files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ All output files generated from the
+ custom input file.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">source_output_files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ All output files generated from the
+ custom input file that are considered source code files
+ by MPC.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+
+ <p class="Body">
+ The example below, which creates generic
+ makefile rules for building custom input files, shows basic use
+ of the custom type and the various fields that can be accessed.
+ The main limitation with the <em class="Code">custom_types</em>
+ keyword, as can be seen below, is that the <em class=
"Code">foreach</em> variable cannot be named as stated <a href=
- "MakeProjectCreator.html#foreach%20syntax" class=
- "XRef">previously</a>.</li>
-
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&lt;%if(custom_types)%&gt;</p>
-
- <p class="Code">&lt;%foreach(custom_types)%&gt;</p>
+ "MakeProjectCreator.html#foreach_syntax" class=
+ "XRef">previously</a>.
+ </lpi>
- <p class="Code">
- &lt;%foreach(custom_type-&gt;input_files)%&gt;</p>
+ <blockquote>
- <p class="Code">
- &lt;%foreach(custom_type-&gt;input_file-&gt;output_files)%&gt;</p>
+ <p class="Code">&lt;%if(custom_types)%&gt;</p>
- <p class="Code">
- &lt;%custom_type-&gt;input_file-&gt;output_file%&gt;:
- &lt;%custom_type-&gt;input_file%&gt;</p>
-
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%custom_type-&gt;command%&gt;
- &lt;%custom_type-&gt;commandflags%&gt; $@</p>
+ <p class="Code">&lt;%foreach(custom_types)%&gt;</p>
- <p class="Code">&nbsp;</p>
-
- <p class="Code">&lt;%endfor%&gt;</p>
-
- <p class="Code">&lt;%endfor%&gt;</p>
-
- <p class="Code">&lt;%endfor%&gt;</p>
-
- <p class="Code">&lt;%endif%&gt;</p>
-
- <p class="Code">&nbsp;</p>
- </li>
-
- <li class="Body">Certain project types don't support the same
- input file used by multiple custom types (current examples of
- this are vc10, cdt6, and cdt7). To accomodate these types, MPC
- has a capability called "combined custom". With this capability
- enabled in the specific ProjectCreator, MPC will "fold together"
- the multiple custom steps so that the target tool (Visual Studio
- or Eclipse CDT) sees it as a single custom step that happens to
- run two or more commands. When "combined custom" is enabled,
- the template needs to be written for it by checking if
- <em class="Code">custom_type-&gt;input_file-&gt;commands</em> is
- non-empty. If it isn't empty, the values in it can be iterated
- over with a <em class="Code">&lt;%foreach%&gt;</em>. During that
- iteration, the following values can be obtained by the template.
- Each one would appear in the template preceeded by
- <em class="Code">custom_type-&gt;input_file-&gt;</em></li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Custom Type Fields for Combined
- Custom</h6>
- <table border="1"
- summary="Custom Type Fields for Combined Custom">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Value</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The effective command, taking into
- account the <em class="TableCode">flag_overrides</em>.
+ <p class="Code">
+ &lt;%foreach(custom_type-&gt;input_files)%&gt;
</p>
- </td>
- </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command-&gt;outopt</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The <em class=
- "TableCode">output_option</em> for this particular
- command, taking into account the
- <em class="TableCode">flag_overrides</em>.
+ <p class="Code">
+ &lt;%foreach(custom_type-&gt;input_file-&gt;output_files)%&gt;
</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command-&gt;outfile</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The first output file for this
- particular command (for use with
- <em class="TableCode">outopt</em>).
- </p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command-&gt;flags</em></p>
- </td>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The <em class=
- "TableCode">commandflags</em> for this particular
- command, taking into account the
- <em class="TableCode">flag_overrides</em>.
+ <p class="Code">
+ &lt;%custom_type-&gt;input_file-&gt;output_file%&gt;:
+ &lt;%custom_type-&gt;input_file%&gt;
</p>
- </td>
- </tr>
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">command-&gt;gdir</em></p>
- </td>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%custom_type-&gt;command%&gt;
+ &lt;%custom_type-&gt;commandflags%&gt; $@
+ </p>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The <em class=
+ <p class="Code">&nbsp;</p>
+
+ <p class="Code">&lt;%endfor%&gt;</p>
+
+ <p class="Code">&lt;%endfor%&gt;</p>
+
+ <p class="Code">&lt;%endfor%&gt;</p>
+
+ <p class="Code">&lt;%endif%&gt;</p>
+
+
+ </blockquote>
+
+ <p class="Body">
+ Certain project types don't support the same
+ input file used by multiple custom types (current examples of
+ this are vc10, cdt6, and cdt7). To accomodate these types, MPC
+ has a capability called "combined custom". With this capability
+ enabled in the specific ProjectCreator, MPC will "fold together"
+ the multiple custom steps so that the target tool (Visual Studio
+ or Eclipse CDT) sees it as a single custom step that happens to
+ run two or more commands. When "combined custom" is enabled,
+ the template needs to be written for it by checking if
+ <em class="Code">custom_type-&gt;input_file-&gt;commands</em> is
+ non-empty. If it isn't empty, the values in it can be iterated
+ over with a <em class="Code">&lt;%foreach%&gt;</em>. During that
+ iteration, the following values can be obtained by the template.
+ Each one would appear in the template preceeded by
+ <em class="Code">custom_type-&gt;input_file-&gt;</em>
+ </p>
+
+ <p style="list-style: none">
+ <h6 class="NumberedTableTitle">
+ Custom Type Fields for Combined
+ Custom
+ </h6>
+ <table border="1"
+ summary="Custom Type Fields for Combined Custom">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Value</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The effective command, taking into
+ account the <em class="TableCode">flag_overrides</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command-&gt;outopt</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The <em class=
+ "TableCode">output_option</em> for this particular
+ command, taking into account the
+ <em class="TableCode">flag_overrides</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command-&gt;outfile</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The first output file for this
+ particular command (for use with
+ <em class="TableCode">outopt</em>).
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command-&gt;flags</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The <em class=
+ "TableCode">commandflags</em> for this particular
+ command, taking into account the
+ <em class="TableCode">flag_overrides</em>.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">command-&gt;gdir</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The <em class=
"TableCode">gendir</em> for this particular
- command.
- </p>
- </td>
- </tr>
+ command.
+ </p>
+ </td>
+ </tr>
- </table>
- </li>
+ </table>
+ </p>
- </ul>
- </div>
- <div>
- <h6 class="Head5">Grouped Files</h6>
+ </div>
- <ul>
- <li class="BodyNoLead">File grouping is part of the syntax of
- mpc files. If a set of files are grouped within the mpc file,
- they can be accessed as a group within the mpd file.</li>
+ <div>
+ <h6 class="Head5">Grouped Files</h6>
- <li class="Body">Files (such as <em class=
+ <p class="Body">
+ File grouping is part of the syntax of
+ mpc files. If a set of files are grouped within the mpc file,
+ they can be accessed as a group within the mpd file.
+ </p>
+
+ <p class="Body">
+ Files (such as <em class=
"Code">Source_Files</em>, <em class="Code">Header_Files</em> )
- can be grouped together as shown <a href=
+ can be grouped together as shown <a href=
"MakeProjectCreator.html#MPC%20grouping%20example" class=
"XRef">here</a>. Within the mpd file, the different components
- can be accessed by prepending <em class="Code">grouped_</em> to
- the component (<em class="Code">grouped_source_files</em>,
- <em class="Code">grouped_header_files</em>, etc.)</li>
-
- <li style="list-style: none">
- <h6 class="NumberedTableTitle">Grouped Files Field Names</h6>
-
- <table border="1" summary="Grouped Files Field Names">
- <tr>
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Field Name</p>
- </th>
-
- <th rowspan="1" colspan="1">
- <p class="Tbl-Heading">Description</p>
- </th>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">files</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The input files associated with the
- group.</p>
- </td>
- </tr>
-
- <tr>
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body"><em class=
- "TableCode">component_name</em></p>
- </td>
-
- <td rowspan="1" colspan="1">
- <p class="Tbl-Body">The name of the set of multiple
- groups of files.</p>
- </td>
- </tr>
- </table>
- </li>
-
- <li class="Body">The example below, which creates make macros
- for each file group, shows basic use of grouping and the fields
- that can be accessed. The main limitation with file grouping,
- as can be seen below, is that the <em class="Code">foreach</em>
- variable cannot be named as stated <a href=
- "MakeProjectCreator.html#foreach%20syntax" class=
+ can be accessed by prepending <em class="Code">grouped_</em> to
+ the component (<em class="Code">grouped_source_files</em>,
+ <em class="Code">grouped_header_files</em>, etc.)
+ </p>
+
+ <p class="Body">
+ <h6 class="NumberedTableTitle">Grouped Files Field Names</h6>
+
+ <table border="1" summary="Grouped Files Field Names">
+ <tr>
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Field Name</p>
+ </th>
+
+ <th rowspan="1" colspan="1">
+ <p class="Tbl-Heading">Description</p>
+ </th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">files</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The input files associated with the
+ group.
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ <em class=
+ "TableCode">component_name</em>
+ </p>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <p class="Tbl-Body">
+ The name of the set of multiple
+ groups of files.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </p>
+
+ <p class="Body">
+ The example below, which creates make macros
+ for each file group, shows basic use of grouping and the fields
+ that can be accessed. The main limitation with file grouping,
+ as can be seen below, is that the <em class="Code">foreach</em>
+ variable cannot be named as stated <a href=
+ "MakeProjectCreator.html#foreach_syntax" class=
"XRef">previously</a>. The following example involves source
- files, but any of the <a href="MakeProjectCreator.html#16907"
+ files, but any of the <a href="MakeProjectCreator.html#16907"
class="XRef">components</a> listed in the mpc and mpb section
- can be used.</li>
+ can be used.
+ </li>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">&lt;%if(grouped_source_files)%&gt;</p>
+ <p class="Code">&lt;%if(grouped_source_files)%&gt;</p>
- <p class="Code">&lt;%comment(Get back each set of grouped
- files)%&gt;</p>
+ <p class="Code">
+ &lt;%comment(Get back each set of grouped
+ files)%&gt;
+ </p>
- <p class="Code">&lt;%foreach(grouped_source_files)%&gt;</p>
+ <p class="Code">&lt;%foreach(grouped_source_files)%&gt;</p>
- <p class="Code">&lt;%comment(This will provide the name of
- the group)%&gt;</p>
+ <p class="Code">
+ &lt;%comment(This will provide the name of
+ the group)%&gt;
+ </p>
- <p class="Code">&lt;%grouped_source_file%&gt; = \</p>
+ <p class="Code">&lt;%grouped_source_file%&gt; = \</p>
- <p class="Code">&lt;%comment(Get all the source files in a
- single group)%&gt;</p>
+ <p class="Code">
+ &lt;%comment(Get all the source files in a
+ single group)%&gt;
+ </p>
- <p class="Code">
- &lt;%foreach(grouped_source_file-&gt;files)%&gt;</p>
+ <p class="Code">
+ &lt;%foreach(grouped_source_file-&gt;files)%&gt;
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%grouped_source_file-&gt;file)%&gt;&lt;%fornotlast("
- \\")%&gt;</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%grouped_source_file-&gt;file)%&gt;&lt;%fornotlast("
+ \\")%&gt;
+ </p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
+
+ <p class="Code">
+ ifndef
+ &lt;%grouped_source_files-&gt;component_name%&gt;
+ </p>
- <p class="Code">ifndef
- &lt;%grouped_source_files-&gt;component_name%&gt;</p>
+ <p class="Code">
+ &lt;%grouped_source_files-&gt;component_name%&gt; = \
+ </p>
- <p class="Code">
- &lt;%grouped_source_files-&gt;component_name%&gt; = \</p>
+ <p class="Code">&lt;%foreach(grouped_source_files)%&gt;</p>
- <p class="Code">&lt;%foreach(grouped_source_files)%&gt;</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%grouped_source_file%&gt;&lt;%fornotlast("
+ \\")%&gt;
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%grouped_source_file%&gt;&lt;%fornotlast("
- \\")%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">endif</p>
- <p class="Code">endif</p>
+ <p class="Code">&lt;%endif%&gt;</p>
- <p class="Code">&lt;%endif%&gt;</p>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <p class="Code">&nbsp;</p>
- </li>
- </ul>
- </div>
- </div>
+ </div>
+ </div>
- <div>
- <h5 class="Head4">Template Input Files (mpt)</h5>
-
- <ul>
- <li class="BodyNoLead">Template input files provide build tool
- specific information that is common to all projects, such as
- compiler switches, intermediate directories, compiler macros,
- etc. Each project type can provide template input files for
- dynamic libraries, static libraries, dynamic executables and
- static executables. However, none of these are actually required
- by MPC.</li>
-
- <li class="Body">The template input files are more free-form than
- the other MPC file types. It is similar to the mpc syntax except
- that there is no project definition and there is only one
- keyword. The keyword, <em class="Code">conditional_include</em>,
- is used to include other mpt files if they can be found in the
- MPC include search path. If the name listed in double quotes
- after <em class="Code">conditional_include</em> is not found, it
- is ignored and no warning is produced. The <em class=
+ <div>
+ <h5 class="Head4">Template Input Files (mpt)</h5>
+
+ <p class="BodyNoLead">
+ Template input files provide build tool
+ specific information that is common to all projects, such as
+ compiler switches, intermediate directories, compiler macros,
+ etc. Each project type can provide template input files for
+ dynamic libraries, static libraries, dynamic executables and
+ static executables. However, none of these are actually required
+ by MPC.
+ </p>
+
+ <p class="Body">
+ The template input files are more free-form than
+ the other MPC file types. It is similar to the mpc syntax except
+ that there is no project definition and there is only one
+ keyword. The keyword, <em class="Code">conditional_include</em>,
+ is used to include other mpt files if they can be found in the
+ MPC include search path. If the name listed in double quotes
+ after <em class="Code">conditional_include</em> is not found, it
+ is ignored and no warning is produced. The <em class=
"Code">mpt</em> extension is automatically added to the name
- provided.</li>
+ provided.
+ </p>
- <li class="Body">The template input files contain variable
- assignments and collections of variable assignments. A variable
- assignment is of the form:</li>
+ <p class="Body">
+ The template input files contain variable
+ assignments and collections of variable assignments. A variable
+ assignment is of the form:
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">variable_name = value1 "value 2"</p>
+ <p class="Code">variable_name = value1 "value 2"</p>
- <p class="Code">variable_name += another_value</p>
+ <p class="Code">variable_name += another_value</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <li class="Body">This variable can then be used within the
- corresponding mpd file.</li>
+ <p class="Body">
+ This variable can then be used within the
+ corresponding mpd file.
+ </p>
- <li class="Body">Variable assignments can be grouped together and
- named within the mpt file and used as scoped variables within the
- mpd file. The following example shows the use of collections of
- variable assignments.</li>
+ <p class="Body">
+ Variable assignments can be grouped together and
+ named within the mpt file and used as scoped variables within the
+ mpd file. The following example shows the use of collections of
+ variable assignments.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">// mpt file</p>
+ <p class="Code">// mpt file</p>
- <p class="Code">configurations = Release Debug</p>
+ <p class="Code">configurations = Release Debug</p>
- <p class="Code">common_defines = WIN32 _CONSOLE</p>
+ <p class="Code">common_defines = WIN32 _CONSOLE</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">Release {</p>
+ <p class="Code">Release {</p>
- <p class="Code">&nbsp;&nbsp;compile_flags = /W3 /GX /O2 /MD
- /GR</p>
+ <p class="Code">
+ &nbsp;&nbsp;compile_flags = /W3 /GX /O2 /MD
+ /GR
+ </p>
- <p class="Code">&nbsp;&nbsp;defines = NDEBUG</p>
+ <p class="Code">&nbsp;&nbsp;defines = NDEBUG</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">Debug {</p>
+ <p class="Code">Debug {</p>
- <p class="Code">&nbsp;&nbsp;compile_flags = /W3 /Gm /GX /Zi /Od
- /MDd /GR /Gy</p>
+ <p class="Code">
+ &nbsp;&nbsp;compile_flags = /W3 /Gm /GX /Zi /Od
+ /MDd /GR /Gy
+ </p>
- <p class="Code">&nbsp;&nbsp;defines = _DEBUG</p>
+ <p class="Code">&nbsp;&nbsp;defines = _DEBUG</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">conditional_include "vcfullmacros"</p>
+ <p class="Code">conditional_include "vcfullmacros"</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <li class="Body">Below is the portion of the mpd file that would
- use the information provided in the mpt file above.</li>
+ <p class="Body">
+ Below is the portion of the mpd file that would
+ use the information provided in the mpt file above.
+ </p>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <blockquote>
- <p class="Code">&lt;%foreach(configurations)%&gt;</p>
+ <p class="Code">&lt;%foreach(configurations)%&gt;</p>
- <p class="Code">Name = &lt;%configuration%&gt;</p>
+ <p class="Code">Name = &lt;%configuration%&gt;</p>
- <p class="Code">&lt;%compile_flags%&gt;&lt;%foreach(defines
- common_defines)%&gt; /D &lt;%define%&gt;=1&lt;%endfor%&gt;</p>
+ <p class="Code">
+ &lt;%compile_flags%&gt;&lt;%foreach(defines
+ common_defines)%&gt; /D &lt;%define%&gt;=1&lt;%endfor%&gt;
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&nbsp;</p>
- </li>
- <li class="Body">The following output is generated from the above
- example:</li>
+ </blockquote>
- <li style="list-style: none">
- <p class="Code">&nbsp;</p>
+ <p class="Body">
+ The following output is generated from the above
+ example:
+ </p>
- <p class="Code">Name = Release</p>
+ <blockquote>
- <p class="Code">/W3 /GX /O2 /MD /GR /D NDEBUG=1 /D WIN32=1 /D
- _CONSOLE=1</p>
+ <p class="Code">Name = Release</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">
+ /W3 /GX /O2 /MD /GR /D NDEBUG=1 /D WIN32=1 /D
+ _CONSOLE=1
+ </p>
- <p class="Code">Name = Debug</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">/W3 /Gm /GX /Zi /Od /MDd /GR /Gy /D _DEBUG=1 /D
- WIN32=1 /D _CONSOLE=1</p>
+ <p class="Code">Name = Debug</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">
+ /W3 /Gm /GX /Zi /Od /MDd /GR /Gy /D _DEBUG=1 /D
+ WIN32=1 /D _CONSOLE=1
+ </p>
- <li class="Body">If a <em class="Code">foreach</em> variable
- value corresponds to a variable group name, that variable group
- is available within the scope of that <em class=
- "Code">foreach</em>.</li>
- <li class="Body">&nbsp;</li>
- </ul>
- </div>
- </div>
+ </blockquote>
- <div>
- <h4 class="Head3">A Simple Example</h4>
+ <p class="Body">
+ If a <em class="Code">foreach</em> variable
+ value corresponds to a variable group name, that variable group
+ is available within the scope of that <em class=
+ "Code">foreach</em>.
+ </p>
+
+ <p class="Body">
+ &nbsp;</li>
+
+ </div>
+ </div>
- <ul>
- <li class="BodyNoLead">We will discuss what it would take to add
- support for a fictional build tool throughout this section. The
- <a href="MakeProjectCreator.html#Figure%201-2" class=
+ <div>
+ <h4 class="Head3">A Simple Example</h4>
+
+ <p class="BodyNoLead">
+ We will discuss what it would take to add
+ support for a fictional build tool throughout this section. The
+ <a href="MakeProjectCreator.html#Figure_1-2" class=
"XRef">Generating projects with mpc.pl diagram</a> shows the
- relationship between the template and project creator discussed
- below.</li>
- </ul>
+ relationship between the template and project creator discussed
+ below.
+ </p>
- <div>
- <h5 class="Head4">Template</h5>
- <ul>
- <li class="BodyNoLead">The best thing to do is to start with the
- template. The template is the most important piece when adding a
- new project type. It basically tells MPC how to lay out all of
- the information it gathers while processing an mpc file. The
- template file will have a mixture of plain text and the mpd
- syntax described in the <a href=
- "MakeProjectCreator.html#MPD%20Syntax" class="XRef">Template
- Files</a> section. Here is our sample <em class=
- "Code">fictional.mpd</em>.</li>
+ <div>
+ <h5 class="Head4">Template</h5>
+
+ <p class="BodyNoLead">
+ The best thing to do is to start with the
+ template. The template is the most important piece when adding a
+ new project type. It basically tells MPC how to lay out all of
+ the information it gathers while processing an mpc file. The
+ template file will have a mixture of plain text and the mpd
+ syntax described in the <a href=
+ "MakeProjectCreator.html#MPD_Syntax" class="XRef">
+ Template
+ Files
+ </a> section. Here is our sample <em class=
+ "Code">fictional.mpd</em>.
+ </p>
+
+ <blockquote>
+ <p class="Code">
+ //=======================================================================
+ </p>
- <li style="list-style: none">
- <p class="Code">
- //=======================================================================</p>
+ <p class="Code">// This project has been generated by MPC.</p>
- <p class="Code">// This project has been generated by MPC.</p>
+ <p class="Code">
+ // CAUTION! Hand edit only if you know what you
+ are doing!
+ </p>
- <p class="Code">// CAUTION! Hand edit only if you know what you
- are doing!</p>
+ <p class="Code">
+ //=======================================================================
+ </p>
- <p class="Code">
- //=======================================================================</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 1 - PROJECT OPTIONS</p>
- <p class="Code">// Section 1 - PROJECT OPTIONS</p>
+ <p class="Code">ctags:*</p>
- <p class="Code">ctags:*</p>
+ <p class="Code">debugSwitches:-nw</p>
- <p class="Code">debugSwitches:-nw</p>
+ <p class="Code">//end-proj-opts</p>
- <p class="Code">//end-proj-opts</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 2 - MAKEFILE</p>
- <p class="Code">// Section 2 - MAKEFILE</p>
+ <p class="Code">Makefile.&lt;%project_name%&gt;</p>
- <p class="Code">Makefile.&lt;%project_name%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 3 - OPTIONS</p>
- <p class="Code">// Section 3 - OPTIONS</p>
+ <p class="Code">//end-options</p>
- <p class="Code">//end-options</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 4 - TARGET FILE</p>
- <p class="Code">// Section 4 - TARGET FILE</p>
+ <p class="Code">&lt;%if(exename)%&gt;</p>
- <p class="Code">&lt;%if(exename)%&gt;</p>
+ <p class="Code">&lt;%exename%&gt;</p>
- <p class="Code">&lt;%exename%&gt;</p>
+ <p class="Code">&lt;%else%&gt;</p>
- <p class="Code">&lt;%else%&gt;</p>
+ <p class="Code">&lt;%if(sharedname)%&gt;</p>
- <p class="Code">&lt;%if(sharedname)%&gt;</p>
+ <p class="Code">&lt;%sharedname%&gt;</p>
- <p class="Code">&lt;%sharedname%&gt;</p>
+ <p class="Code">&lt;%else%&gt;</p>
- <p class="Code">&lt;%else%&gt;</p>
+ <p class="Code">&lt;%if(staticname)%&gt;</p>
- <p class="Code">&lt;%if(staticname)%&gt;</p>
+ <p class="Code">&lt;%staticname%&gt;</p>
- <p class="Code">&lt;%staticname%&gt;</p>
+ <p class="Code">&lt;%endif%&gt;</p>
- <p class="Code">&lt;%endif%&gt;</p>
+ <p class="Code">&lt;%endif%&gt;</p>
- <p class="Code">&lt;%endif%&gt;</p>
+ <p class="Code">&lt;%endif%&gt;</p>
- <p class="Code">&lt;%endif%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 5 - SOURCE FILES</p>
- <p class="Code">// Section 5 - SOURCE FILES</p>
+ <p class="Code">&lt;%foreach(source_files)%&gt;</p>
- <p class="Code">&lt;%foreach(source_files)%&gt;</p>
+ <p class="Code">&lt;%source_file%&gt;</p>
- <p class="Code">&lt;%source_file%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">//end-srcfiles</p>
- <p class="Code">//end-srcfiles</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 6 - INCLUDE DIRECTORIES</p>
- <p class="Code">// Section 6 - INCLUDE DIRECTORIES</p>
+ <p class="Code">&lt;%foreach(includes)%&gt;</p>
- <p class="Code">&lt;%foreach(includes)%&gt;</p>
+ <p class="Code">&lt;%include%&gt;</p>
- <p class="Code">&lt;%include%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">//end-include-dirs</p>
- <p class="Code">//end-include-dirs</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 7 - LIBRARY DIRECTORIES</p>
- <p class="Code">// Section 7 - LIBRARY DIRECTORIES</p>
+ <p class="Code">&lt;%foreach(libpaths)%&gt;</p>
- <p class="Code">&lt;%foreach(libpaths)%&gt;</p>
+ <p class="Code">&lt;%libpath%&gt;</p>
- <p class="Code">&lt;%libpath%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">//end-library-dirs</p>
- <p class="Code">//end-library-dirs</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 8 - DEFINITIONS</p>
- <p class="Code">// Section 8 - DEFINITIONS</p>
+ <p class="Code">&lt;%foreach(macros defines)%&gt;</p>
- <p class="Code">&lt;%foreach(macros defines)%&gt;</p>
+ <p class="Code">-D&lt;%macro%&gt;</p>
- <p class="Code">-D&lt;%macro%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">&lt;%if(pch_header)%&gt;</p>
- <p class="Code">&lt;%if(pch_header)%&gt;</p>
+ <p class="Code">&lt;%foreach(pch_defines)%&gt;</p>
- <p class="Code">&lt;%foreach(pch_defines)%&gt;</p>
+ <p class="Code">-D&lt;%pch_define%&gt;</p>
- <p class="Code">-D&lt;%pch_define%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">&lt;%endif%&gt;</p>
- <p class="Code">&lt;%endif%&gt;</p>
+ <p class="Code">//end-defs</p>
- <p class="Code">//end-defs</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 9 - C FLAGS</p>
- <p class="Code">// Section 9 - C FLAGS</p>
+ <p class="Code">&lt;%cflags("-g")%&gt;</p>
- <p class="Code">&lt;%cflags("-g")%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 10 - LIBRARY FLAGS</p>
- <p class="Code">// Section 10 - LIBRARY FLAGS</p>
+ <p class="Code">&lt;%libflags%&gt;</p>
- <p class="Code">&lt;%libflags%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 11 - SRC DIRECTORY</p>
- <p class="Code">// Section 11 - SRC DIRECTORY</p>
+ <p class="Code">.</p>
- <p class="Code">.</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 12 - OBJ DIRECTORY</p>
- <p class="Code">// Section 12 - OBJ DIRECTORY</p>
+ <p class="Code">&lt;%objdir(".")%&gt;</p>
- <p class="Code">&lt;%objdir(".")%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 13 - BIN DIRECTORY</p>
- <p class="Code">// Section 13 - BIN DIRECTORY</p>
+ <p class="Code">
+ &lt;%if(exeout)%&gt;&lt;%exeout%&gt;&lt;%else%&gt;.&lt;%endif%&gt;
+ </p>
- <p class="Code">
- &lt;%if(exeout)%&gt;&lt;%exeout%&gt;&lt;%else%&gt;.&lt;%endif%&gt;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">
+ // User targets section. Following lines will
+ be
+ </p>
- <p class="Code">// User targets section. Following lines will
- be</p>
+ <p class="Code">
+ // inserted into Makefile right after the
+ generated cleanall target.
+ </p>
- <p class="Code">// inserted into Makefile right after the
- generated cleanall target.</p>
+ <p class="Code">
+ // The Project File editor does not edit these
+ lines - edit the .vpj
+ </p>
- <p class="Code">// The Project File editor does not edit these
- lines - edit the .vpj</p>
+ <p class="Code">
+ // directly. You should know what you are
+ doing.
+ </p>
- <p class="Code">// directly. You should know what you are
- doing.</p>
+ <p class="Code">// Section 14 - USER TARGETS</p>
- <p class="Code">// Section 14 - USER TARGETS</p>
+ <p class="Code">&lt;%marker(top)%&gt;</p>
- <p class="Code">&lt;%marker(top)%&gt;</p>
+ <p class="Code">&lt;%marker(macros)%&gt;</p>
- <p class="Code">&lt;%marker(macros)%&gt;</p>
+ <p class="Code">&lt;%marker(local)%&gt;</p>
- <p class="Code">&lt;%marker(local)%&gt;</p>
+ <p class="Code">&lt;%marker(bottom)%&gt;</p>
- <p class="Code">&lt;%marker(bottom)%&gt;</p>
+ <p class="Code">//end-user-targets</p>
- <p class="Code">//end-user-targets</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">// Section 15 - LIBRARY FILES</p>
- <p class="Code">// Section 15 - LIBRARY FILES</p>
+ <p class="Code">&lt;%foreach(libs lit_libs pure_libs)%&gt;</p>
- <p class="Code">&lt;%foreach(libs lit_libs pure_libs)%&gt;</p>
+ <p class="Code">&lt;%lib%&gt;</p>
- <p class="Code">&lt;%lib%&gt;</p>
+ <p class="Code">&lt;%endfor%&gt;</p>
- <p class="Code">&lt;%endfor%&gt;</p>
+ <p class="Code">//end-library-files</p>
- <p class="Code">//end-library-files</p>
- <p class="Code">&nbsp;</p>
- </li>
+ </blockquote>
- <li class="Body">Note that output is generated differently
- depending upon whether <em class="Code">&lt;%exename%&gt;</em>,
- <em class="Code">&lt;%sharedname%&gt;</em> or <em class=
+ <p class="Body">
+ Note that output is generated differently
+ depending upon whether <em class="Code">&lt;%exename%&gt;</em>,
+ <em class="Code">&lt;%sharedname%&gt;</em> or <em class=
"Code">&lt;%staticname%&gt;</em> is defined due to the if
- statements that were used with relation these variable names.
- Also, certain portions of the project file are only generated if
- particular variables are set.</li>
- </ul>
- </div>
+ statements that were used with relation these variable names.
+ Also, certain portions of the project file are only generated if
+ particular variables are set.
+ </p>
- <div>
- <h5 class="Head4">Project Creator</h5>
+ </div>
- <ul>
- <li class="BodyNoLead">Next, you would write the <em class=
+ <div>
+ <h5 class="Head4">Project Creator</h5>
+
+ <p class="BodyNoLead">
+ Next, you would write the <em class=
"Code">FictionalProjectCreator.pm</em>. It may be best to start
- with a copy of the <em class="Code">MakeProjectCreator.pm</em>
- and edit it. Change the package name to <em class=
+ with a copy of the <em class="Code">MakeProjectCreator.pm</em>
+ and edit it. Change the package name to <em class=
"Code">FictionalProjectCreator</em> and have it inherit from
- <em class="Code">MakeProjectBase</em> and <em class=
+ <em class="Code">MakeProjectBase</em> and <em class=
"Code">ProjectCreator</em>. Then, override the methods that are
- needed for this particular type.</li>
+ needed for this particular type.
+ </p>
- <li style="list-style: none">
- <p class="Code">package FictionalProjectCreator;</p>
+ <blockquote>
+ <p class="Code">package FictionalProjectCreator;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Description : A Fictional Project Creator</p>
+ <p class="Code"># Description : A Fictional Project Creator</p>
- <p class="Code"># Author : Chad Elliott</p>
+ <p class="Code"># Author : Chad Elliott</p>
- <p class="Code"># Create Date : 10/01/2004</p>
+ <p class="Code"># Create Date : 10/01/2004</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Pragmas</p>
+ <p class="Code"># Pragmas</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use strict;</p>
+ <p class="Code">use strict;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use MakeProjectBase;</p>
+ <p class="Code">use MakeProjectBase;</p>
- <p class="Code">use ProjectCreator;</p>
+ <p class="Code">use ProjectCreator;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use vars qw(@ISA);</p>
+ <p class="Code">use vars qw(@ISA);</p>
- <p class="Code">@ISA = qw(MakeProjectBase ProjectCreator);</p>
+ <p class="Code">@ISA = qw(MakeProjectBase ProjectCreator);</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Subroutine Section</p>
+ <p class="Code"># Subroutine Section</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub convert_slashes {</p>
+ <p class="Code">sub convert_slashes {</p>
- <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return 0;</p>
+ <p class="Code">&nbsp;&nbsp;return 0;</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub project_file_extension {</p>
+ <p class="Code">sub project_file_extension {</p>
- <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return '.fic';</p>
+ <p class="Code">&nbsp;&nbsp;return '.fic';</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub get_dll_exe_template_input_file {</p>
+ <p class="Code">sub get_dll_exe_template_input_file {</p>
- <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return 'fictionalexe';</p>
+ <p class="Code">&nbsp;&nbsp;return 'fictionalexe';</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub get_dll_template_input_file {</p>
+ <p class="Code">sub get_dll_template_input_file {</p>
- <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return 'fictionaldll';</p>
+ <p class="Code">&nbsp;&nbsp;return 'fictionaldll';</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub get_template {</p>
+ <p class="Code">sub get_template {</p>
- <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;#my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return 'fictional';</p>
+ <p class="Code">&nbsp;&nbsp;return 'fictional';</p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">1;</p>
+ <p class="Code">1;</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <li class="Body">In our example, we inherit from the
- MakeProjectBase which provides some methods that are common to
- all &ldquo;make&rdquo; based project creators.</li>
+ <p class="Body">
+ In our example, we inherit from the
+ MakeProjectBase which provides some methods that are common to
+ all &ldquo;make&rdquo; based project creators.
+ </p>
- <li class="Body">We override the <em class=
+ <p class="Body">
+ We override the <em class=
"Code">convert_slashes</em> method to return 0. A zero return
- value tells MPC not to convert slashes to back slashes
- (converting slashes is useful for Windows related build
- tools).</li>
+ value tells MPC not to convert slashes to back slashes
+ (converting slashes is useful for Windows related build
+ tools).
+ </p>
- <li class="Body">We then override the <em class=
+ <p class="Body">
+ We then override the <em class=
"Code">project_file_extension</em> method to return the project
- file extension which is used by a method defined in the
- MakeProjectBase module.</li>
+ file extension which is used by a method defined in the
+ MakeProjectBase module.
+ </p>
- <li class="Body">Next, we override the <em class=
+ <p class="Body">
+ Next, we override the <em class=
"Code">get_dll_exe_template_input_file</em> and <em class=
"Code">get_dll_template_input_file</em> methods. Those methods
- return the specific template input file names for a dynamic
- executable and dynamic library, respectively.</li>
+ return the specific template input file names for a dynamic
+ executable and dynamic library, respectively.
+ </p>
- <li class="Body">Lastly, we override the <em class=
+ <p class="Body">
+ Lastly, we override the <em class=
"Code">get_template</em> method to return the template file name
- for our new project type. In our case, the method returns
- <em class="Code">fictional</em> which corresponds to the name of
- the template file we created earlier.</li>
-
- <li class="Body">There are many other methods that can be
- overridden to change the way MPC generates output. For a complete
- list, see the &ldquo;Virtual Methods To Be Overridden&rdquo;
- section of the <em class="Code">Creator.pm</em> and <em class=
- "Code">ProjectCreator.pm</em>.</li>
- </ul>
- </div>
+ for our new project type. In our case, the method returns
+ <em class="Code">fictional</em> which corresponds to the name of
+ the template file we created earlier.
+ </p>
+
+ <p class="Body">
+ There are many other methods that can be
+ overridden to change the way MPC generates output. For a complete
+ list, see the &ldquo;Virtual Methods To Be Overridden&rdquo;
+ section of the <em class="Code">Creator.pm</em> and <em class=
+ "Code">ProjectCreator.pm</em>.
+ </p>
+
+ </div>
- <div>
- <h5 class="Head4">Workspace Creator</h5>
+ <div>
+ <h5 class="Head4">Workspace Creator</h5>
- <ul>
- <li class="BodyNoLead">The last part that you would need to write
- is the <em class="Code">FictionalWorkspaceCreator.pm</em>. This
- module is usually more code-intensive than its Project Creator
- counterpart.</li>
+ <p class="BodyNoLead">
+ The last part that you would need to write
+ is the <em class="Code">FictionalWorkspaceCreator.pm</em>. This
+ module is usually more code-intensive than its Project Creator
+ counterpart.
+ </p>
- <li style="list-style: none">
- <p class="Code">package FictionalWorkspaceCreator;</p>
+ <blockquote>
+ <p class="Code">package FictionalWorkspaceCreator;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Description : A Fictional Workspace
- Creator</p>
+ <p class="Code">
+ # Description : A Fictional Workspace
+ Creator
+ </p>
- <p class="Code"># Author : Chad Elliott</p>
+ <p class="Code"># Author : Chad Elliott</p>
- <p class="Code"># Create Date : 10/01/2004</p>
+ <p class="Code"># Create Date : 10/01/2004</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Pragmas</p>
+ <p class="Code"># Pragmas</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use strict;</p>
+ <p class="Code">use strict;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use FictionalProjectCreator;</p>
+ <p class="Code">use FictionalProjectCreator;</p>
- <p class="Code">use WorkspaceCreator;</p>
+ <p class="Code">use WorkspaceCreator;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">use vars qw(@ISA);</p>
+ <p class="Code">use vars qw(@ISA);</p>
- <p class="Code">@ISA = qw(WorkspaceCreator);</p>
+ <p class="Code">@ISA = qw(WorkspaceCreator);</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code"># Subroutine Section</p>
+ <p class="Code"># Subroutine Section</p>
- <p class="Code">#
- ************************************************************</p>
+ <p class="Code">
+ #
+ ************************************************************
+ </p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub workspace_file_name {</p>
+ <p class="Code">sub workspace_file_name {</p>
- <p class="Code">&nbsp;&nbsp;my $self = shift;</p>
+ <p class="Code">&nbsp;&nbsp;my $self = shift;</p>
- <p class="Code">&nbsp;&nbsp;return
- $self-&gt;get_modified_workspace_name($self-&gt;get_workspace_name(),
- '.fws');</p>
+ <p class="Code">
+ &nbsp;&nbsp;return
+ $self-&gt;get_modified_workspace_name($self-&gt;get_workspace_name(),
+ '.fws');
+ </p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub pre_workspace {</p>
+ <p class="Code">sub pre_workspace {</p>
- <p class="Code">&nbsp;&nbsp;my($self, $fh) = @_;</p>
+ <p class="Code">&nbsp;&nbsp;my($self, $fh) = @_;</p>
- <p class="Code">&nbsp;&nbsp;my $crlf = $self-&gt;crlf();</p>
+ <p class="Code">&nbsp;&nbsp;my $crlf = $self-&gt;crlf();</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;print $fh '&lt;?xml version="1.0"
- encoding="UTF-8"?&gt;', $crlf,</p>
+ <p class="Code">
+ &nbsp;&nbsp;print $fh '&lt;?xml version="1.0"
+ encoding="UTF-8"?&gt;', $crlf,
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;!--
- MPC Command --&gt;', $crlf,</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;!--
+ MPC Command --&gt;', $crlf,
+ </p>
- <p class="Code">
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;!--
- $0 @ARGV --&gt;", $crlf;</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&lt;!--
+ $0 @ARGV --&gt;", $crlf;
+ </p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">sub write_comps {</p>
+ <p class="Code">sub write_comps {</p>
- <p class="Code">&nbsp;&nbsp;my($self, $fh) = @_;</p>
+ <p class="Code">&nbsp;&nbsp;my($self, $fh) = @_;</p>
- <p class="Code">&nbsp;&nbsp;my $projects =
- $self-&gt;get_projects();</p>
+ <p class="Code">
+ &nbsp;&nbsp;my $projects =
+ $self-&gt;get_projects();
+ </p>
- <p class="Code">&nbsp;&nbsp;my @list =
- $self-&gt;sort_dependencies($projects);</p>
+ <p class="Code">
+ &nbsp;&nbsp;my @list =
+ $self-&gt;sort_dependencies($projects);
+ </p>
- <p class="Code">&nbsp;&nbsp;my $crlf = $self-&gt;crlf();</p>
+ <p class="Code">&nbsp;&nbsp;my $crlf = $self-&gt;crlf();</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;&nbsp;print $fh '&lt;projects&gt;',
- $crlf;</p>
+ <p class="Code">
+ &nbsp;&nbsp;print $fh '&lt;projects&gt;',
+ $crlf;
+ </p>
- <p class="Code">&nbsp;&nbsp;foreach my $project (@list) {</p>
+ <p class="Code">&nbsp;&nbsp;foreach my $project (@list) {</p>
- <p class="Code">&nbsp;&nbsp;&nbsp;&nbsp;print $fh " &lt;project
- path=\"$project\"/&gt;$crlf";</p>
+ <p class="Code">
+ &nbsp;&nbsp;&nbsp;&nbsp;print $fh " &lt;project
+ path=\"$project\"/&gt;$crlf";
+ </p>
- <p class="Code">&nbsp;&nbsp;}</p>
+ <p class="Code">&nbsp;&nbsp;}</p>
- <p class="Code">&nbsp;&nbsp;print $fh
- "&lt;/projects&gt;$crlf";</p>
+ <p class="Code">
+ &nbsp;&nbsp;print $fh
+ "&lt;/projects&gt;$crlf";
+ </p>
- <p class="Code">}</p>
+ <p class="Code">}</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">1;</p>
+ <p class="Code">1;</p>
- <p class="Code">&nbsp;</p>
+ <p class="Code">&nbsp;</p>
- <p class="Code">&nbsp;</p>
- </li>
+ <p class="Code">&nbsp;</p>
+ </blockquote>
- <li class="Body">The first method we override from
- WorkspaceCreator.pm is the <em class=
+ <p class="Body">
+ The first method we override from
+ WorkspaceCreator.pm is the <em class=
"Code">workspace_file_name</em> method. It is used to determine
- the output file for the generated workspace.</li>
+ the output file for the generated workspace.
+ </p>
- <li class="Body">Second, we override the <em class=
+ <p class="Body">
+ Second, we override the <em class=
"Code">pre_workspace</em> method, which we use to print out the
- generic unchanging section of our generated workspace.</li>
+ generic unchanging section of our generated workspace.
+ </p>
- <li class="Body">Lastly, we override the <em class=
+ <p class="Body">
+ Lastly, we override the <em class=
"Code">write_comps</em> method. This method is where the bulk of
- the work is done in our workspace creator. A workspace creator
- has many sets of data available. A reference to the list of
- project file names can be obtained through the <em class=
+ the work is done in our workspace creator. A workspace creator
+ has many sets of data available. A reference to the list of
+ project file names can be obtained through the <em class=
"Code">get_projects</em> method; project-specific information can
- be obtained through the <em class="Code">get_project_info</em>
- method which returns an array reference where each array element
- is an array containing the project name, project dependencies and
- a project guid (if applicable).</li>
- </ul>
+ be obtained through the <em class="Code">get_project_info</em>
+ method which returns an array reference where each array element
+ is an array containing the project name, project dependencies and
+ a project guid (if applicable).
+ </p>
+
+ </div>
+ </div>
</div>
- </div>
</div>
- </div>
-</body>
+ </body>
</html>