diff options
author | Adam Mitz <mitza-oci@users.noreply.github.com> | 2012-02-27 21:34:24 +0000 |
---|---|---|
committer | Adam Mitz <mitza-oci@users.noreply.github.com> | 2012-02-27 21:34:24 +0000 |
commit | 075717ba0cf8d9fe8d644c86cd7fa3a4da8da33d (patch) | |
tree | 9a80214d912f99fc5cdc998f5ea752f8b977d4ed /docs/html | |
parent | ae0756daab9503e85b59e7549d513dcdf739310d (diff) | |
download | MPC-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.css | 34 | ||||
-rw-r--r-- | docs/html/MakeProjectCreator.html | 14223 |
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"> </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"> </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"> </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"> </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"> </p> + <p class="Body"> + <table border="1" summary="Generating workspaces with mwc.pl"> + <tr> + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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’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’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 “install” file after processing each - project. These “install” 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 “install” file after processing each + project. These “install” 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 “make” 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 “make” 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"> </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"> </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"> </p> + <blockquote> - <p class="Code">project {</p> - <p class="Code"> includes += $(PROJ_TOP)</p> - <p class="Code">}</p> + <p class="Code">project {</p> - <p class="Code"> </p> - </li> + <p class="Code"> 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"> </p> - <p class="Code">CPPFLAGS += -I..</p> + </blockquote> - <p class="Code"> </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"> </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"> </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"> </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"> </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"> </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"> </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"><%</em> and - <em class="Code">%></em> or use the <em class= + and <em class="Code">$MPC_ROOT/templates/*.mpd</em> ) and + search for names used within <em class="Code"><%</em> and + <em class="Code">%></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"> </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"> </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"> </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"> </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"> </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"> </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: <execution_path_root> = <mpc_config_path>. + 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"> </p> - - <p class="Code">/foo/bar_root = /foo/bar_root/MPC/config</p> - - <p class="Code"> </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"><language>:<func name>[, - <language>:<func name>]*</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"> + <language>:<func name>[, + <language>:<func name>]* + </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 “projects” 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 “projects” 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 - “workspaces,” 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 + “workspaces,” 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"> </p> - <p class="Code">workspace(optional name): - optional_base_workspace {</p> + <div> + <h5 class="Head4">mwc and mwb files</h5> - <p class="Code"> file.mpc</p> - <p class="Code"> 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"> other.mwc</p> + <blockquote> - <p class="Code"> </p> - <p class="Code"> exclude(vc6, vc7, vc71, vc8, vc9, - vc10, nmake) {</p> + <p class="Code"> + workspace(optional name): + optional_base_workspace { + </p> - <p class="Code"> this_directory</p> + <p class="Code"> file.mpc</p> - <p class="Code"> }</p> + <p class="Code"> directory</p> - <p class="Code"> </p> + <p class="Code"> other.mwc</p> - <p class="Code"> exclude(prop:microsoft) {</p> + <p class="Code"> </p> - <p class="Code"> non_microsoft</p> + <p class="Code"> + exclude(vc6, vc7, vc71, vc8, vc9, + vc10, nmake) { + </p> - <p class="Code"> }</p> + <p class="Code"> this_directory</p> - <p class="Code"> </p> + <p class="Code"> }</p> - <p class="Code"> specific(rpmspec) {</p> + <p class="Code"> </p> + + <p class="Code"> exclude(prop:microsoft) {</p> - <p class="Code"> rpm_version = 1.0</p> + <p class="Code"> non_microsoft</p> - <p class="Code"> }</p> + <p class="Code"> }</p> + + <p class="Code"> </p> - <p class="Code">}</p> + <p class="Code"> specific(rpmspec) {</p> - <p class="Code"> </p> - </li> + <p class="Code"> 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"> }</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"> </p> + <blockquote> - <p class="Code">workspace {</p> - <p class="Code"> ...</p> + <p class="Code">workspace {</p> - <p class="Code"> static {</p> + <p class="Code"> ...</p> - <p class="Code"> cmdline += -static</p> + <p class="Code"> static {</p> - <p class="Code"> directory/foo.mpc</p> + <p class="Code"> cmdline += -static</p> - <p class="Code"> }</p> + <p class="Code"> directory/foo.mpc</p> - <p class="Code"> </p> + <p class="Code"> }</p> - <p class="Code"> exclude(gnuace, make) {</p> + <p class="Code"> </p> - <p class="Code"> some.mpc</p> + <p class="Code"> exclude(gnuace, make) {</p> - <p class="Code"> }</p> + <p class="Code"> some.mpc</p> + + <p class="Code"> }</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> // Associate the name "other" with - dir3</p> + <p class="Code"> + // Associate the name "other" with + dir3 + </p> - <p class="Code"> associate(other) {</p> + <p class="Code"> associate(other) {</p> - <p class="Code"> dir3</p> + <p class="Code"> dir3</p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </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 “projects” and each project - can inherit from base projects.</li> - <li style="list-style: none"> - <p class="Code"> </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 “projects” 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"> </p> - <p class="Code"> exename = client</p> + <p class="Code"> + project(optional name): base_project, + another_base_project { + </p> - <p class="Code"> includes += directory_name - other_directory</p> + <p class="Code"> exename = client</p> - <p class="Code"> libpaths += /usr/X11R6/lib</p> + <p class="Code"> + includes += directory_name + other_directory + </p> - <p class="Code"> </p> + <p class="Code"> libpaths += /usr/X11R6/lib</p> - <p class="Code"> Header_Files {</p> + <p class="Code"> </p> - <p class="Code"> file1.h</p> + <p class="Code"> Header_Files {</p> - <p class="Code"> file2.h</p> + <p class="Code"> file1.h</p> - <p class="Code"> fileN.h</p> + <p class="Code"> file2.h</p> - <p class="Code"> }</p> + <p class="Code"> fileN.h</p> - <p class="Code"> </p> + <p class="Code"> }</p> - <p class="Code"> Source_Files {</p> + <p class="Code"> </p> - <p class="Code"> file1.cpp</p> + <p class="Code"> Source_Files {</p> - <p class="Code"> file2.cpp</p> + <p class="Code"> file1.cpp</p> - <p class="Code"> fileN.cpp</p> + <p class="Code"> file2.cpp</p> - <p class="Code"> }</p> + <p class="Code"> fileN.cpp</p> - <p class="Code">}</p> + <p class="Code"> }</p> - <p class="Code"> </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"><project - name[:name=value]></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"> + <project + name[:name=value]> + </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’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’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"><% %></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"><% %></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"><% - %></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"> + <% + %> + </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"> </p> - <p class="Code">specific(rpmspec) {</p> - <p class="Code"> rpm_description = \ns {</p> - <p class="Code">This description</p> - <p class="Code">spans multiple lines.</p> - <p class="Code"> }</p> - <p class="Code">}</p> - <p class="Code"> </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"> rpm_description = \ns {</p> + <p class="Code">This description</p> + <p class="Code">spans multiple lines.</p> + <p class="Code"> }</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 “project” 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 “project” 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"> </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"> file1.cpp</p> + <blockquote> - <p class="Code"> file2.cpp</p> - <p class="Code">}</p> + <p class="Code">Source_Files {</p> - <p class="Code"> </p> - </li> + <p class="Code"> file1.cpp</p> - <li class="Body">The second form is a complex list of files - within named blocks.</li> + <p class="Code"> file2.cpp</p> - <li style="list-style: none"> - <a name="MPC grouping example"></a> + <p class="Code">}</p> - <p class="Code"> </p> - <p class="Code">Source_Files(MACRO_NAME) {</p> + </blockquote> - <p class="Code"> BlockA {</p> + <p class="Body"> + The second form is a complex list of files + within named blocks. + </p> - <p class="Code"> file1.cpp</p> + <blockquote> + <a name="MPC grouping example"></a> - <p class="Code"> file2.cpp</p> - <p class="Code"> }</p> - <p class="Code"> BlockB {</p> + <p class="Code">Source_Files(MACRO_NAME) {</p> - <p class="Code"> file3.cpp</p> + <p class="Code"> BlockA {</p> - <p class="Code"> file4.cpp</p> + <p class="Code"> file1.cpp</p> - <p class="Code"> }</p> + <p class="Code"> file2.cpp</p> - <p class="Code">}</p> + <p class="Code"> }</p> - <p class="Code"> </p> - </li> + <p class="Code"> BlockB {</p> + + <p class="Code"> 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"> file4.cpp</p> + + <p class="Code"> }</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"> </p> - <p class="Code">verbatim(<project type>, - <location>) {</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"> ...</p> + <blockquote> - <p class="Code">}</p> + <p class="Code"> + verbatim(<project type>, + <location>) { + </p> - <p class="Code"> </p> - </li> + <p class="Code"> ...</p> - <li class="Body">When MPC is generating a project of type - <em class="Code"><project type></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"><project type></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"><location></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"> </p> + <blockquote> + + <p class="Code">verbatim(gnuace, bottom) {</p> - <p class="Code">verbatim(gnuace, bottom) {</p> + <p class="Code"> all: foo</p> - <p class="Code"> 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"> $ENV_VAR</p> - <li style="list-style: none"> - <p class="Code"> </p> + <p class="Code"> last_resort_value</p> - <p class="Code">expand(VAR_NAME) {</p> + <p class="Code">}</p> + </blockquote> - <p class="Code"> $ENV_VAR</p> + </div> - <p class="Code"> 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"> </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"> lit_libs += qt-mt230nc</p> - <p class="Code">} else {</p> + <p class="Code">specific(prop:windows) {</p> - <p class="Code"> lit_libs += qt-mt</p> + <p class="Code"> lit_libs += qt-mt230nc</p> - <p class="Code">}</p> + <p class="Code">} else {</p> - <p class="Code"> </p> - </li> + <p class="Code"> 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 ’!’) - 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 ’!’) + 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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body">Yes</p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body">Yes</p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body">Yes</p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body">Yes</p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> </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"> </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(<project type|property> [, - <project type|property> ...]) {</p> + <blockquote> + <p class="Code"> </p> - <p class="Code"> source1.cpp</p> + <p class="Code"> + conditional(<project type|property> [, + <project type|property> ...]) { + </p> - <p class="Code"> ...</p> + <p class="Code"> source1.cpp</p> - <p class="Code">}</p> + <p class="Code"> ...</p> - <p class="Code"> </p> + <p class="Code">}</p> - <p class="Code">conditional(<project type|property> [, - <project type|property> ...]) {</p> - <p class="Code"> source1.cpp</p> - <p class="Code"> ...</p> + <p class="Code"> + conditional(<project type|property> [, + <project type|property> ...]) { + </p> - <p class="Code">} else {</p> + <p class="Code"> source1.cpp</p> - <p class="Code"> source2.cpp</p> + <p class="Code"> ...</p> - <p class="Code"> ...</p> + <p class="Code">} else {</p> - <p class="Code">}</p> + <p class="Code"> source2.cpp</p> - <p class="Code"> </p> - </li> + <p class="Code"> ...</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 ’!’) 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 ’!’) which will + cause the conditional to be evaluated for all types except the + type specified. + </p> - <li style="list-style: none"> - <p class="Code"> </p> + </div> - <p class="Code">project {</p> + <div> + <a name="Custom_Types_and_Build_Rules"></a> - <p class="Code"> Define_Custom(MOC) {</p> + <h6 class="Head5">Custom Types and Build Rules</h6> - <p class="Code"> automatic = 0</p> - <p class="Code"> 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"> output_option = - -o</p> + <blockquote> - <p class="Code"> inputext = .h</p> + <p class="Code">project {</p> - <p class="Code"> pre_extension = - _moc</p> + <p class="Code"> Define_Custom(MOC) {</p> - <p class="Code"> source_outputext = - .cpp</p> + <p class="Code"> automatic = 0</p> - <p class="Code"> keyword mocflags = - commandflags</p> + <p class="Code"> + command = + $(QTDIR)/bin/moc + </p> - <p class="Code"> }</p> + <p class="Code"> + output_option = + -o + </p> - <p class="Code"> </p> + <p class="Code"> inputext = .h</p> - <p class="Code"> // Custom Component</p> + <p class="Code"> + pre_extension = + _moc + </p> - <p class="Code"> MOC_Files {</p> + <p class="Code"> + source_outputext = + .cpp + </p> - <p class="Code"> QtReactor.h</p> + <p class="Code"> + keyword mocflags = + commandflags + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> Source_Files {</p> + <p class="Code"> // Custom Component</p> - <p class="Code"> QtReactor_moc.cpp</p> + <p class="Code"> MOC_Files {</p> - <p class="Code"> }</p> + <p class="Code"> QtReactor.h</p> - <p class="Code">}</p> + <p class="Code"> }</p> - <p class="Code"> </p> - </li> + <p class="Code"> </p> - <li class="Body">The above example defines a custom file type, - “<em class="Code">MOC</em> ”, 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"> 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"> QtReactor_moc.cpp</p> + + <p class="Code"> }</p> + + <p class="Code">}</p> + + <p class="Code"> </p> + </blockquote> + + <p class="Body"> + The above example defines a custom file type, + “<em class="Code">MOC</em> ”, 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 - <name></em></p> - </td> - - <td rowspan="1" colspan="1"> - <p class="Tbl-Body">This is a special assignment that - allows the user to map <name> 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 + <name> + </em> + </p> + </td> + + <td rowspan="1" colspan="1"> + <p class="Tbl-Body"> + This is a special assignment that + allows the user to map <name> 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 - “automatic” 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 + “automatic” 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">>></em> construct.</li> - - <li class="Body">Below is an example that demonstrates the use - of <em class="Code">>></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"> </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">>></em> construct. + </p> + + <p class="Body"> + Below is an example that demonstrates the use + of <em class="Code">>></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"> Define_Custom(Quogen) {</p> + + <p class="Code"> automatic = 0</p> + + <p class="Code"> command = perl quogen.pl</p> - <p class="Code"> Define_Custom(Quogen) {</p> - - <p class="Code"> automatic = 0</p> - - <p class="Code"> command = perl quogen.pl</p> + <p class="Code"> + commandflags = --debuglevel=1 + --language=c++ \ + </p> - <p class="Code"> commandflags = --debuglevel=1 - --language=c++ \</p> + <p class="Code"> + --kernel_language=c++ + </p> - <p class="Code"> - --kernel_language=c++</p> + <p class="Code"> inputext = .prp</p> - <p class="Code"> inputext = .prp</p> + <p class="Code"> + keyword quogenflags = + commandflags + </p> - <p class="Code"> keyword quogenflags = - commandflags</p> + <p class="Code"> }</p> - <p class="Code"> }</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> Quogen_Files {</p> - <p class="Code"> Quogen_Files {</p> + <p class="Code"> + foo.prp >> + hello.h hello.cpp + </p> - <p class="Code"> foo.prp >> - hello.h hello.cpp</p> + <p class="Code"> }</p> - <p class="Code"> }</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> Source_Files {</p> - <p class="Code"> Source_Files {</p> + <p class="Code"> hello.cpp</p> - <p class="Code"> hello.cpp</p> + <p class="Code"> }</p> - <p class="Code"> }</p> + <p class="Code">}</p> - <p class="Code">}</p> + <p class="Code"> </p> + </blockquote> - <p class="Code"> </p> - </li> + <p class="Body"> + You can use the <em class="Code"><<</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"><<</em> foo.in as shown below. + </p> - <li class="Body">You can use the <em class="Code"><<</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"><<</em> foo.in as shown below.</li> + <blockquote> - <li style="list-style: none"> - <p class="Code"> </p> + <p class="Code">Quogen_Files {</p> - <p class="Code">Quogen_Files {</p> + <p class="Code"> + foo.prp >> hello.h + hello.cpp << foo.in + </p> - <p class="Code"> foo.prp >> hello.h - hello.cpp << foo.in</p> + <p class="Code">}</p> - <p class="Code">}</p> + <p class="Code"> </p> + </blockquote> - <p class="Code"> </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"> </p> + <p class="Code">project {</p> - <p class="Code">project {</p> + <p class="Code"> Define_Custom(TEST) {</p> - <p class="Code"> Define_Custom(TEST) {</p> - - <p class="Code"> optional(keyword) - {</p> + <p class="Code"> + optional(keyword) + { + </p> - <p class="Code"> - flag_keyword(option) += - value [, value]</p> + <p class="Code"> + flag_keyword(option) += + value [, value] + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> }</p> + <p class="Code"> }</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"> </p> + <blockquote> - <p class="Code">Define_Custom(IDL) {</p> + <p class="Code">Define_Custom(IDL) {</p> - <p class="Code"> ...</p> + <p class="Code"> ...</p> - <p class="Code"> inputext = .idl</p> + <p class="Code"> inputext = .idl</p> - <p class="Code"> source_pre_extension = C, S</p> + <p class="Code"> source_pre_extension = C, S</p> - <p class="Code"> header_pre_extension = C, S</p> + <p class="Code"> header_pre_extension = C, S</p> - <p class="Code"> inline_pre_extension = C, S</p> + <p class="Code"> inline_pre_extension = C, S</p> - <p class="Code"> source_outputext = .cpp, .cxx, - .cc, .C</p> + <p class="Code"> + source_outputext = .cpp, .cxx, + .cc, .C + </p> - <p class="Code"> header_outputext = .h, .hpp, - .hxx, .hh</p> + <p class="Code"> + header_outputext = .h, .hpp, + .hxx, .hh + </p> - <p class="Code"> inline_outputext = .inl, .i</p> + <p class="Code"> inline_outputext = .inl, .i</p> - <p class="Code"> keyword idlflags = - commandflags</p> + <p class="Code"> + keyword idlflags = + commandflags + </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> optional(source_pre_extension) - {</p> + <p class="Code"> + optional(source_pre_extension) + { + </p> - <p class="Code"> commandflags(-GA) += - A</p> + <p class="Code"> + commandflags(-GA) += + A + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> optional(template_outputext) - {</p> + <p class="Code"> + optional(template_outputext) + { + </p> - <p class="Code"> commandflags(!-Sc) += - S_T.cpp, S_T.cxx, S_T.cc, S_T.C</p> + <p class="Code"> + commandflags(!-Sc) += + S_T.cpp, S_T.cxx, S_T.cc, S_T.C + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> optional(header_pre_extension) - {</p> + <p class="Code"> + optional(header_pre_extension) + { + </p> - <p class="Code"> commandflags(!-Sc) += - S_T</p> + <p class="Code"> + commandflags(!-Sc) += + S_T + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> optional(inline_pre_extension) - {</p> + <p class="Code"> + optional(inline_pre_extension) + { + </p> - <p class="Code"> commandflags(!-Sc) += - S_T</p> + <p class="Code"> + commandflags(!-Sc) += + S_T + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> - </li> + <p class="Code"> </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"> </p> + <blockquote> - <p class="Code">MOC_Files {</p> + <p class="Code">MOC_Files {</p> - <p class="Code"> commandflags += -nw</p> + <p class="Code"> commandflags += -nw</p> - <p class="Code"> gendir = moc_generated</p> + <p class="Code"> gendir = moc_generated</p> - <p class="Code"> QtReactor.h</p> + <p class="Code"> QtReactor.h</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">Source_Files {</p> + <p class="Code">Source_Files {</p> - <p class="Code"> - moc_generated/QtReactor_moc.cpp</p> + <p class="Code"> + moc_generated/QtReactor_moc.cpp + </p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </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"> </p> + <blockquote> - <p class="Code">project: taoidldefaults {</p> + <p class="Code">project: taoidldefaults {</p> - <p class="Code"> specific(!automake) {</p> + <p class="Code"> specific(!automake) {</p> - <p class="Code"> tao_idlflags += -Sc - -hs _s.h -si _s.i -ss _s.cpp -hc .h -ci .i -cs .cpp</p> + <p class="Code"> + tao_idlflags += -Sc + -hs _s.h -si _s.i -ss _s.cpp -hc .h -ci .i -cs .cpp + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> // This allows "make idl_stubs" - to work</p> + <p class="Code"> + // This allows "make idl_stubs" + to work + </p> - <p class="Code"> verbatim(gnuace, macros) {</p> + <p class="Code"> verbatim(gnuace, macros) {</p> - <p class="Code"> IDL_CLIENT_HDR_EXT - ?= .h</p> + <p class="Code"> + IDL_CLIENT_HDR_EXT + ?= .h + </p> - <p class="Code"> IDL_CLIENT_INL_EXT - ?= .i</p> + <p class="Code"> + IDL_CLIENT_INL_EXT + ?= .i + </p> - <p class="Code"> IDL_CLIENT_SRC_EXT - ?= .cpp</p> + <p class="Code"> + IDL_CLIENT_SRC_EXT + ?= .cpp + </p> - <p class="Code"> IDL_SERVER_HDR_EXT - ?= _s.h</p> + <p class="Code"> + IDL_SERVER_HDR_EXT + ?= _s.h + </p> - <p class="Code"> IDL_SERVER_INL_EXT - ?= _s.i</p> + <p class="Code"> + IDL_SERVER_INL_EXT + ?= _s.i + </p> - <p class="Code"> IDL_SERVER_SRC_EXT - ?= _s.cpp</p> + <p class="Code"> + IDL_SERVER_SRC_EXT + ?= _s.cpp + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> </p> + <p class="Code"> </p> + + <p class="Code"> Modify_Custom(IDL) {</p> + + <p class="Code"> + source_pre_extension = , _s + </p> + + <p class="Code"> + header_pre_extension = , _s + </p> + + <p class="Code"> + inline_pre_extension = , _s + </p> + + <p class="Code"> + inline_outputext + = .i + </p> + + <p class="Code"> }</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"><%</em> and <em class= + "Code">%></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"><%input%></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"><%input_basename%></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"><%input_dirname%></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"><%input_noext%></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"><%input_ext%></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"><%output%></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"><%output_basename%></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"><%output_dirname%></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"><%output_noext%></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"><%output_ext%></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"><%documentation_file%></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"><%header_file%></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"><%inline_file%></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"><%resource_file%></em> (<em class= + "TableCode"><%resx_file%></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"><%source_file%></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"><%template_file%></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"><%documentation_file_noext%></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"><%header_file_noext%></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"><%inline_file_noext%></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"><%resource_file_noext%></em> + (<em class="TableCode"><%resx_file_noext%></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"><%source_file_noext%></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"><%template_file_noext%></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"><%input_ext%></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"><%output_ext%></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"><%and%></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"><%cat%></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"><%cmdsep%></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"><%cat%></em> and <em class= + "Code"><%mv%></em> commands would be run. + <em class="Code"> + <%cat%> <%source_file%> + <%gt%> foo <%cmdsep%> <%mv%> foo + other_dir + </em> + </p> + </td> + </tr> + + <tr> + <td rowspan="1" colspan="1"> + <p class="TblCode"> + <em class= + "TableCode"><%cmp%></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"><%cp%></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"><%crlf%></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"><%equote%></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"><%gendir%></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"><%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%></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"><%mkdir%></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"><%mv%></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"><%nul%></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"><%pathsep%></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"><%or%></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"><%os%></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"><%prj_type%></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"><%quote%></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"><%rm%></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"><%rmdir%></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"><%slash%></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"><%temporary%></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"><%bat%></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"><%cmd%></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"><%exe%></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 ’!’ 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"> includes += $(ZIPARCHIVEROOT)</p> + + <p class="Code"> + libpaths += + $(ZIPARCHIVEROOT)/lib + </p> + + <p class="Code"> + libs += + ziparch + </p> + + <p class="Code">}</p> + + <p class="Code"> </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"> 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"> - source_pre_extension = , _s</p> + Auto_Disconnect.h Low_Priority_Setup.cpp + RTEC_Initializer.h + </p> <p class="Code"> - header_pre_extension = , _s</p> + Auto_Disconnect.inl Low_Priority_Setup.h + rtec_perf_export.h + </p> <p class="Code"> - 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"> inline_outputext - = .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"> sharedname = TAO_RTEC_Perf</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"> + dllflags += + TAO_RTEC_PERF_BUILD_DLL + </p> + + <p class="Code"> </p> + + <p class="Code"> Template_Files {</p> + + <p class="Code"> Auto_Disconnect.cpp</p> + + <p class="Code"> Auto_Functor.cpp</p> + + <p class="Code"> + Low_Priority_Setup.cpp + </p> + + <p class="Code"> RIR_Narrow.cpp</p> + + <p class="Code"> Servant_var.cpp</p> + + <p class="Code"> Shutdown.cpp</p> + + <p class="Code"> Task_Activator.cpp</p> <p class="Code"> }</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"> Auto_Disconnect.cpp</p> + + <p class="Code"> Auto_Functor.cpp</p> + + <p class="Code"> Low_Priority_Setup.cpp</p> + + <p class="Code"> RIR_Narrow.cpp</p> + + <p class="Code"> Servant_var.cpp</p> + + <p class="Code"> Shutdown.cpp</p> + + <p class="Code"> 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’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"><% %></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"><% %></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"><%</em> and <em class= - "Code">%></em> are part of the syntax.</li> + <p class="Code"> + <%if(exename)%>BIN = + <%exename%><%else%>LIB = + <%sharedname%><%endif%> + </p> + + + </blockquote> + + <p class="Body"> + is equivalent to:</li> + + <blockquote> + + <p class="Code"><%if(exename)%></p> + + <p class="Code">BIN = <%exename%></p> + + <p class="Code"><%else%></p> + + <p class="Code">LIB = <%sharedname%></p> + + <p class="Code"><%endif%></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=<%foreach(fvar, idl_files source_files + header_files)%> <%fvar%><%endfor%> + </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 ’<em class="Code">s</em> ’ removed. + </p> + + <blockquote> + + <p class="Code"> + FILES=<%foreach(idl_files source_files + header_files)%> <%idl_file%><%endfor%> + </p> + + + </blockquote> + + <p class="Body"> + Note that the <em class= + "Code"><%idl_file%></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 ’<em class= + "Code">s</em> ’, 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"> + <%foreach(filelist)%> + <%filelist%><%endfor%> + </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"><%input%></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"><%input_basename%></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"><%input_dirname%></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"><%input_noext%></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"><%input_ext%></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"><%output%></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"><%output_basename%></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"><%output_dirname%></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"><%output_noext%></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"><%output_ext%></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"><%documentation_file%></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"><%header_file%></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"><%inline_file%></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"><%resource_file%></em> (<em class= - "TableCode"><%resx_file%></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"><%source_file%></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"><%template_file%></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"><%documentation_file_noext%></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"><%header_file_noext%></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"><%inline_file_noext%></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"><%resource_file_noext%></em> - (<em class="TableCode"><%resx_file_noext%></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"><%source_file_noext%></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"><%template_file_noext%></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"><%input_ext%></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"><%output_ext%></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"><%marker(local)%></em>. + </p> </td> </tr> - </table> - </li> - <li class="Body"> </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"><%and%></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"><%cat%></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"><%cmdsep%></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"><%cat%></em> and <em class= - "Code"><%mv%></em> commands would be run. - <em class="Code"><%cat%> <%source_file%> - <%gt%> foo <%cmdsep%> <%mv%> 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"><%cmp%></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"><%cp%></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"><%crlf%></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"><%equote%></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"><%gendir%></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"><%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%></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"><%mkdir%></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"><%mv%></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"><%nul%></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"><%temporary%></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"><%pathsep%></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"><%or%></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"><%os%></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"><%prj_type%></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"><%quote%></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"><%rm%></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"><%rmdir%></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"><%slash%></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"><%temporary%></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"><%bat%></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"><%cmd%></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"><%exe%></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"> </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"> </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 ’!’ 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"> </p> - - <p class="Code">// ziparchive.mpb</p> - - <p class="Code">feature(ziparchive) {</p> - - <p class="Code"> includes += $(ZIPARCHIVEROOT)</p> - - <p class="Code"> libpaths += - $(ZIPARCHIVEROOT)/lib</p> - - <p class="Code"> libs += - ziparch</p> - - <p class="Code">}</p> - - <p class="Code"> </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"> </p> - - <p class="Code">project: taoserver {</p> - - <p class="Code">}</p> - - <p class="Code"> </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"> </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"> </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"> </p> - - <p class="Code">project(RTEC_Perf): strategies, rtcorbaevent, - minimum_corba {</p> - - <p class="Code"> sharedname = TAO_RTEC_Perf</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"> dllflags += - TAO_RTEC_PERF_BUILD_DLL</p> - - <p class="Code"> </p> - - <p class="Code"> Template_Files {</p> - - <p class="Code"> Auto_Disconnect.cpp</p> - - <p class="Code"> Auto_Functor.cpp</p> - - <p class="Code"> - Low_Priority_Setup.cpp</p> - - <p class="Code"> RIR_Narrow.cpp</p> - - <p class="Code"> Servant_var.cpp</p> - - <p class="Code"> Shutdown.cpp</p> - - <p class="Code"> Task_Activator.cpp</p> - - <p class="Code"> }</p> - - <p class="Code">}</p> - - <p class="Code"> </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"> </p> - - <p class="Code">project(RTEC_Perf): strategies, rtcorbaevent, - minimum_corba {</p> - - <p class="Code"> </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"> </p> - - <p class="Code">sharedname = TAO_RTEC_Perf</p> - - <p class="Code"> </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"> </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"> </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"> </p> - - <p class="Code">dllflags += TAO_RTEC_PERF_BUILD_DLL</p> - - <p class="Code"> </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"> </p> - - <p class="Code">Template_Files {</p> - - <p class="Code"> Auto_Disconnect.cpp</p> - - <p class="Code"> Auto_Functor.cpp</p> - - <p class="Code"> Low_Priority_Setup.cpp</p> - - <p class="Code"> RIR_Narrow.cpp</p> - - <p class="Code"> Servant_var.cpp</p> - - <p class="Code"> Shutdown.cpp</p> - - <p class="Code"> Task_Activator.cpp</p> - - <p class="Code">}</p> - - <p class="Code"> </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’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"><% %></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"><% %></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"> </p> - - <p class="Code"><%if(exename)%>BIN = - <%exename%><%else%>LIB = - <%sharedname%><%endif%></p> - - <p class="Code"> </p> - </li> - - <li class="Body">is equivalent to:</li> - - <li style="list-style: none"> - <p class="Code"> </p> - - <p class="Code"><%if(exename)%></p> - - <p class="Code">BIN = <%exename%></p> - - <p class="Code"><%else%></p> - - <p class="Code">LIB = <%sharedname%></p> - - <p class="Code"><%endif%></p> - - <p class="Code"> </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"> </p> - - <p class="Code">FILES=<%foreach(fvar, idl_files source_files - header_files)%> <%fvar%><%endfor%></p> - - <p class="Code"> </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 ’<em class="Code">s</em> ’ removed.</li> - - <li style="list-style: none"> - <p class="Code"> </p> - - <p class="Code">FILES=<%foreach(idl_files source_files - header_files)%> <%idl_file%><%endfor%></p> - - <p class="Code"> </p> - </li> - - <li class="Body">Note that the <em class= - "Code"><%idl_file%></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 ’<em class= - "Code">s</em> ’, 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"> </p> - - <p class="Code"><%foreach(filelist)%> - <%filelist%><%endfor%></p> - - <p class="Code"> </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"><%marker(local)%></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"><%temporary%></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"> </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 <template> + [<html output> [language]] + </p> - <p class="Code">Usage: document_template.pl <template> - [<html output> [language]]</p> + <p class="Code"> </p> - <p class="Code"> </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"> + + extension replaced with + .html. + </p> - <p class="Code"> - extension replaced with - .html.</p> + <p class="Code"> + language - This defaults to + the language for which the template is designed. + </p> - <p class="Code">language - This defaults to - the language for which the template is designed.</p> + <p class="Code"> + + It can be any of the valid + language settings for MPC: + </p> - <p class="Code"> - It can be any of the valid - language settings for MPC:</p> + <p class="Code"> + + cplusplus csharp java + vb + </p> + </blockquote> - <p class="Code"> - 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">-></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->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->input_file->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"> </p> - - <p class="Code"><%if(custom_types)%></p> - - <p class="Code"><%foreach(custom_types)%></p> + "MakeProjectCreator.html#foreach_syntax" class= + "XRef">previously</a>. + </lpi> - <p class="Code"> - <%foreach(custom_type->input_files)%></p> + <blockquote> - <p class="Code"> - <%foreach(custom_type->input_file->output_files)%></p> + <p class="Code"><%if(custom_types)%></p> - <p class="Code"> - <%custom_type->input_file->output_file%>: - <%custom_type->input_file%></p> - - <p class="Code"> - <%custom_type->command%> - <%custom_type->commandflags%> $@</p> + <p class="Code"><%foreach(custom_types)%></p> - <p class="Code"> </p> - - <p class="Code"><%endfor%></p> - - <p class="Code"><%endfor%></p> - - <p class="Code"><%endfor%></p> - - <p class="Code"><%endif%></p> - - <p class="Code"> </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->input_file->commands</em> is - non-empty. If it isn't empty, the values in it can be iterated - over with a <em class="Code"><%foreach%></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->input_file-></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"> + <%foreach(custom_type->input_files)%> </p> - </td> - </tr> - <tr> - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"><em class= - "TableCode">command->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"> + <%foreach(custom_type->input_file->output_files)%> </p> - </td> - </tr> - - <tr> - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"><em class= - "TableCode">command->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->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"> + <%custom_type->input_file->output_file%>: + <%custom_type->input_file%> </p> - </td> - </tr> - <tr> - <td rowspan="1" colspan="1"> - <p class="Tbl-Body"><em class= - "TableCode">command->gdir</em></p> - </td> + <p class="Code"> + <%custom_type->command%> + <%custom_type->commandflags%> $@ + </p> - <td rowspan="1" colspan="1"> - <p class="Tbl-Body">The <em class= + <p class="Code"> </p> + + <p class="Code"><%endfor%></p> + + <p class="Code"><%endfor%></p> + + <p class="Code"><%endfor%></p> + + <p class="Code"><%endif%></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->input_file->commands</em> is + non-empty. If it isn't empty, the values in it can be iterated + over with a <em class="Code"><%foreach%></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->input_file-></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->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->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->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->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"> </p> + <blockquote> - <p class="Code"><%if(grouped_source_files)%></p> + <p class="Code"><%if(grouped_source_files)%></p> - <p class="Code"><%comment(Get back each set of grouped - files)%></p> + <p class="Code"> + <%comment(Get back each set of grouped + files)%> + </p> - <p class="Code"><%foreach(grouped_source_files)%></p> + <p class="Code"><%foreach(grouped_source_files)%></p> - <p class="Code"><%comment(This will provide the name of - the group)%></p> + <p class="Code"> + <%comment(This will provide the name of + the group)%> + </p> - <p class="Code"><%grouped_source_file%> = \</p> + <p class="Code"><%grouped_source_file%> = \</p> - <p class="Code"><%comment(Get all the source files in a - single group)%></p> + <p class="Code"> + <%comment(Get all the source files in a + single group)%> + </p> - <p class="Code"> - <%foreach(grouped_source_file->files)%></p> + <p class="Code"> + <%foreach(grouped_source_file->files)%> + </p> - <p class="Code"> - <%grouped_source_file->file)%><%fornotlast(" - \\")%></p> + <p class="Code"> + <%grouped_source_file->file)%><%fornotlast(" + \\")%> + </p> - <p class="Code"><%endfor%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code"><%endfor%></p> - <p class="Code"> </p> + <p class="Code"> </p> + + <p class="Code"> + ifndef + <%grouped_source_files->component_name%> + </p> - <p class="Code">ifndef - <%grouped_source_files->component_name%></p> + <p class="Code"> + <%grouped_source_files->component_name%> = \ + </p> - <p class="Code"> - <%grouped_source_files->component_name%> = \</p> + <p class="Code"><%foreach(grouped_source_files)%></p> - <p class="Code"><%foreach(grouped_source_files)%></p> + <p class="Code"> + <%grouped_source_file%><%fornotlast(" + \\")%> + </p> - <p class="Code"> - <%grouped_source_file%><%fornotlast(" - \\")%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code">endif</p> - <p class="Code">endif</p> + <p class="Code"><%endif%></p> - <p class="Code"><%endif%></p> + <p class="Code"> </p> + </blockquote> - <p class="Code"> </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"> </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"> </p> - </li> + <p class="Code"> </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"> </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"> </p> + <p class="Code"> </p> - <p class="Code">Release {</p> + <p class="Code">Release {</p> - <p class="Code"> compile_flags = /W3 /GX /O2 /MD - /GR</p> + <p class="Code"> + compile_flags = /W3 /GX /O2 /MD + /GR + </p> - <p class="Code"> defines = NDEBUG</p> + <p class="Code"> defines = NDEBUG</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">Debug {</p> + <p class="Code">Debug {</p> - <p class="Code"> compile_flags = /W3 /Gm /GX /Zi /Od - /MDd /GR /Gy</p> + <p class="Code"> + compile_flags = /W3 /Gm /GX /Zi /Od + /MDd /GR /Gy + </p> - <p class="Code"> defines = _DEBUG</p> + <p class="Code"> defines = _DEBUG</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">conditional_include "vcfullmacros"</p> + <p class="Code">conditional_include "vcfullmacros"</p> - <p class="Code"> </p> - </li> + <p class="Code"> </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"> </p> + <blockquote> - <p class="Code"><%foreach(configurations)%></p> + <p class="Code"><%foreach(configurations)%></p> - <p class="Code">Name = <%configuration%></p> + <p class="Code">Name = <%configuration%></p> - <p class="Code"><%compile_flags%><%foreach(defines - common_defines)%> /D <%define%>=1<%endfor%></p> + <p class="Code"> + <%compile_flags%><%foreach(defines + common_defines)%> /D <%define%>=1<%endfor%> + </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"><%endfor%></p> + <p class="Code"><%endfor%></p> - <p class="Code"> </p> - </li> - <li class="Body">The following output is generated from the above - example:</li> + </blockquote> - <li style="list-style: none"> - <p class="Code"> </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"> </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"> </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"> </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"> </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"> + </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"> </p> - <p class="Code"> </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"> </p> - <p class="Code"> </p> + <p class="Code">// Section 2 - MAKEFILE</p> - <p class="Code">// Section 2 - MAKEFILE</p> + <p class="Code">Makefile.<%project_name%></p> - <p class="Code">Makefile.<%project_name%></p> + <p class="Code"> </p> - <p class="Code"> </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"> </p> - <p class="Code"> </p> + <p class="Code">// Section 4 - TARGET FILE</p> - <p class="Code">// Section 4 - TARGET FILE</p> + <p class="Code"><%if(exename)%></p> - <p class="Code"><%if(exename)%></p> + <p class="Code"><%exename%></p> - <p class="Code"><%exename%></p> + <p class="Code"><%else%></p> - <p class="Code"><%else%></p> + <p class="Code"><%if(sharedname)%></p> - <p class="Code"><%if(sharedname)%></p> + <p class="Code"><%sharedname%></p> - <p class="Code"><%sharedname%></p> + <p class="Code"><%else%></p> - <p class="Code"><%else%></p> + <p class="Code"><%if(staticname)%></p> - <p class="Code"><%if(staticname)%></p> + <p class="Code"><%staticname%></p> - <p class="Code"><%staticname%></p> + <p class="Code"><%endif%></p> - <p class="Code"><%endif%></p> + <p class="Code"><%endif%></p> - <p class="Code"><%endif%></p> + <p class="Code"><%endif%></p> - <p class="Code"><%endif%></p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 5 - SOURCE FILES</p> - <p class="Code">// Section 5 - SOURCE FILES</p> + <p class="Code"><%foreach(source_files)%></p> - <p class="Code"><%foreach(source_files)%></p> + <p class="Code"><%source_file%></p> - <p class="Code"><%source_file%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code">//end-srcfiles</p> - <p class="Code">//end-srcfiles</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 6 - INCLUDE DIRECTORIES</p> - <p class="Code">// Section 6 - INCLUDE DIRECTORIES</p> + <p class="Code"><%foreach(includes)%></p> - <p class="Code"><%foreach(includes)%></p> + <p class="Code"><%include%></p> - <p class="Code"><%include%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code">//end-include-dirs</p> - <p class="Code">//end-include-dirs</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 7 - LIBRARY DIRECTORIES</p> - <p class="Code">// Section 7 - LIBRARY DIRECTORIES</p> + <p class="Code"><%foreach(libpaths)%></p> - <p class="Code"><%foreach(libpaths)%></p> + <p class="Code"><%libpath%></p> - <p class="Code"><%libpath%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code">//end-library-dirs</p> - <p class="Code">//end-library-dirs</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 8 - DEFINITIONS</p> - <p class="Code">// Section 8 - DEFINITIONS</p> + <p class="Code"><%foreach(macros defines)%></p> - <p class="Code"><%foreach(macros defines)%></p> + <p class="Code">-D<%macro%></p> - <p class="Code">-D<%macro%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code"><%if(pch_header)%></p> - <p class="Code"><%if(pch_header)%></p> + <p class="Code"><%foreach(pch_defines)%></p> - <p class="Code"><%foreach(pch_defines)%></p> + <p class="Code">-D<%pch_define%></p> - <p class="Code">-D<%pch_define%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code"><%endif%></p> - <p class="Code"><%endif%></p> + <p class="Code">//end-defs</p> - <p class="Code">//end-defs</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 9 - C FLAGS</p> - <p class="Code">// Section 9 - C FLAGS</p> + <p class="Code"><%cflags("-g")%></p> - <p class="Code"><%cflags("-g")%></p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 10 - LIBRARY FLAGS</p> - <p class="Code">// Section 10 - LIBRARY FLAGS</p> + <p class="Code"><%libflags%></p> - <p class="Code"><%libflags%></p> + <p class="Code"> </p> - <p class="Code"> </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"> </p> - <p class="Code"> </p> + <p class="Code">// Section 12 - OBJ DIRECTORY</p> - <p class="Code">// Section 12 - OBJ DIRECTORY</p> + <p class="Code"><%objdir(".")%></p> - <p class="Code"><%objdir(".")%></p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 13 - BIN DIRECTORY</p> - <p class="Code">// Section 13 - BIN DIRECTORY</p> + <p class="Code"> + <%if(exeout)%><%exeout%><%else%>.<%endif%> + </p> - <p class="Code"> - <%if(exeout)%><%exeout%><%else%>.<%endif%></p> + <p class="Code"> </p> - <p class="Code"> </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"><%marker(top)%></p> - <p class="Code"><%marker(top)%></p> + <p class="Code"><%marker(macros)%></p> - <p class="Code"><%marker(macros)%></p> + <p class="Code"><%marker(local)%></p> - <p class="Code"><%marker(local)%></p> + <p class="Code"><%marker(bottom)%></p> - <p class="Code"><%marker(bottom)%></p> + <p class="Code">//end-user-targets</p> - <p class="Code">//end-user-targets</p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code">// Section 15 - LIBRARY FILES</p> - <p class="Code">// Section 15 - LIBRARY FILES</p> + <p class="Code"><%foreach(libs lit_libs pure_libs)%></p> - <p class="Code"><%foreach(libs lit_libs pure_libs)%></p> + <p class="Code"><%lib%></p> - <p class="Code"><%lib%></p> + <p class="Code"><%endfor%></p> - <p class="Code"><%endfor%></p> + <p class="Code">//end-library-files</p> - <p class="Code">//end-library-files</p> - <p class="Code"> </p> - </li> + </blockquote> - <li class="Body">Note that output is generated differently - depending upon whether <em class="Code"><%exename%></em>, - <em class="Code"><%sharedname%></em> or <em class= + <p class="Body"> + Note that output is generated differently + depending upon whether <em class="Code"><%exename%></em>, + <em class="Code"><%sharedname%></em> or <em class= "Code"><%staticname%></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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </p> - <p class="Code">use strict;</p> + <p class="Code">use strict;</p> - <p class="Code"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </p> - <p class="Code">sub convert_slashes {</p> + <p class="Code">sub convert_slashes {</p> - <p class="Code"> #my $self = shift;</p> + <p class="Code"> #my $self = shift;</p> - <p class="Code"> return 0;</p> + <p class="Code"> return 0;</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">sub project_file_extension {</p> + <p class="Code">sub project_file_extension {</p> - <p class="Code"> #my $self = shift;</p> + <p class="Code"> #my $self = shift;</p> - <p class="Code"> return '.fic';</p> + <p class="Code"> return '.fic';</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </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"> #my $self = shift;</p> + <p class="Code"> #my $self = shift;</p> - <p class="Code"> return 'fictionalexe';</p> + <p class="Code"> return 'fictionalexe';</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">sub get_dll_template_input_file {</p> + <p class="Code">sub get_dll_template_input_file {</p> - <p class="Code"> #my $self = shift;</p> + <p class="Code"> #my $self = shift;</p> - <p class="Code"> return 'fictionaldll';</p> + <p class="Code"> return 'fictionaldll';</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">sub get_template {</p> + <p class="Code">sub get_template {</p> - <p class="Code"> #my $self = shift;</p> + <p class="Code"> #my $self = shift;</p> - <p class="Code"> return 'fictional';</p> + <p class="Code"> return 'fictional';</p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">1;</p> + <p class="Code">1;</p> - <p class="Code"> </p> - </li> + <p class="Code"> </p> + </blockquote> - <li class="Body">In our example, we inherit from the - MakeProjectBase which provides some methods that are common to - all “make” based project creators.</li> + <p class="Body"> + In our example, we inherit from the + MakeProjectBase which provides some methods that are common to + all “make” 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 “Virtual Methods To Be Overridden” - 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 “Virtual Methods To Be Overridden” + 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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </p> - <p class="Code">use strict;</p> + <p class="Code">use strict;</p> - <p class="Code"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </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"> </p> + <p class="Code"> </p> - <p class="Code">sub workspace_file_name {</p> + <p class="Code">sub workspace_file_name {</p> - <p class="Code"> my $self = shift;</p> + <p class="Code"> my $self = shift;</p> - <p class="Code"> return - $self->get_modified_workspace_name($self->get_workspace_name(), - '.fws');</p> + <p class="Code"> + return + $self->get_modified_workspace_name($self->get_workspace_name(), + '.fws'); + </p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">sub pre_workspace {</p> + <p class="Code">sub pre_workspace {</p> - <p class="Code"> my($self, $fh) = @_;</p> + <p class="Code"> my($self, $fh) = @_;</p> - <p class="Code"> my $crlf = $self->crlf();</p> + <p class="Code"> my $crlf = $self->crlf();</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> print $fh '<?xml version="1.0" - encoding="UTF-8"?>', $crlf,</p> + <p class="Code"> + print $fh '<?xml version="1.0" + encoding="UTF-8"?>', $crlf, + </p> - <p class="Code"> - '<!-- - MPC Command -->', $crlf,</p> + <p class="Code"> + '<!-- + MPC Command -->', $crlf, + </p> - <p class="Code"> - "<!-- - $0 @ARGV -->", $crlf;</p> + <p class="Code"> + "<!-- + $0 @ARGV -->", $crlf; + </p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">sub write_comps {</p> + <p class="Code">sub write_comps {</p> - <p class="Code"> my($self, $fh) = @_;</p> + <p class="Code"> my($self, $fh) = @_;</p> - <p class="Code"> my $projects = - $self->get_projects();</p> + <p class="Code"> + my $projects = + $self->get_projects(); + </p> - <p class="Code"> my @list = - $self->sort_dependencies($projects);</p> + <p class="Code"> + my @list = + $self->sort_dependencies($projects); + </p> - <p class="Code"> my $crlf = $self->crlf();</p> + <p class="Code"> my $crlf = $self->crlf();</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> print $fh '<projects>', - $crlf;</p> + <p class="Code"> + print $fh '<projects>', + $crlf; + </p> - <p class="Code"> foreach my $project (@list) {</p> + <p class="Code"> foreach my $project (@list) {</p> - <p class="Code"> print $fh " <project - path=\"$project\"/>$crlf";</p> + <p class="Code"> + print $fh " <project + path=\"$project\"/>$crlf"; + </p> - <p class="Code"> }</p> + <p class="Code"> }</p> - <p class="Code"> print $fh - "</projects>$crlf";</p> + <p class="Code"> + print $fh + "</projects>$crlf"; + </p> - <p class="Code">}</p> + <p class="Code">}</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code">1;</p> + <p class="Code">1;</p> - <p class="Code"> </p> + <p class="Code"> </p> - <p class="Code"> </p> - </li> + <p class="Code"> </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> |