/usr/share/doc/gnat-gps/html/Extending-Projects.html is in gnat-gps-doc 5.0-16.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 2002-2010 AdaCore.
This document is free; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This document is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, see http://www.gnu.org/licenses/.
A copy of the license is included in the section entitled
"GNU General Public License". -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using the GNAT Programming Studio: Extending Projects</title>
<meta name="description" content="Using the GNAT Programming Studio: Extending Projects">
<meta name="keywords" content="Using the GNAT Programming Studio: Extending Projects">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Index-table.html#Index-table" rel="index" title="Index table">
<link href="Project-Handling.html#Project-Handling" rel="up" title="Project Handling">
<link href="Project-View.html#Project-View" rel="next" title="Project View">
<link href="Scenarios-and-Configuration-Variables.html#Scenarios-and-Configuration-Variables" rel="previous" title="Scenarios and Configuration Variables">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
pre.smallexample {background-color:rgb(240,240,240);
font-family: courier new,courier,fixed;
font-size: 14px;
margin: 0px 40px 0px 40px;
border-width: 1px 2px 2px 1px;
border-top-style: dotted;
border-left-style: dotted;
border-right-style: solid;
border-bottom-style: solid;
border-color: black;}
code {color:black;
font-family: courier new,courier,fixed;
font-size: 14px;}
body {font-family: arial,helvetica,sans-serif;
font-size: 16px;
max-width: 800px;
text-align: justify}
samp {font-family: courier new,courier,fixed;
font-size: 14px}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Extending-Projects"></a>
<div class="header">
<p>
Next: <a href="Project-View.html#Project-View" accesskey="n" rel="next">Project View</a>, Previous: <a href="Scenarios-and-Configuration-Variables.html#Scenarios-and-Configuration-Variables" accesskey="p" rel="previous">Scenarios and Configuration Variables</a>, Up: <a href="Project-Handling.html#Project-Handling" accesskey="u" rel="up">Project Handling</a> [<a href="Index-table.html#Index-table" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Extending-Projects-1"></a>
<h3 class="section">7.4 Extending Projects</h3>
<a name="index-projects_002c-extending"></a>
<a name="Description-of-extending-projects"></a>
<h4 class="subsection">7.4.1 Description of extending projects</h4>
<p>The project files were designed to support big projects, with several
hundreds or thousands of source files. In such contexts, one developer
will generally work on a subset of the sources. It is also not rare for
such a project to take several hours to fully compile. Most developers
therefore do not need to have the full copy of the project compiled on
their own machine or personal disk space.
</p>
<p>However, it is still useful to be able to access other source files
of the application, for instance to find out whether a subprogram can be
changed and where it is currently called.
</p>
<p>Such a setup can be achieved through extending projects. These are
special types of projects that inherit most of their attributes and source
files from another project, and can have, in their source directories, some
source files that hide/replace those inherited from the original project.
</p>
<p>When compiling such projects, the compiler will put the newly created
project files in the extending project’s directory, and will leave the original
untouched. As a result, the original project can be shared read-only among
several developers (for instance, it is usual for this original project to be
the result of a nightly build of the application).
</p>
<a name="Creating-extending-projects"></a>
<h4 class="subsection">7.4.2 Creating extending projects</h4>
<p>This project wizard allows you to easily create extending projects. You
should select an empty directory (which will be created automatically if
needed), as well as a list of source files you want to work on initially.
New files can also be added later.
</p>
<p>As a result, GPS will copy the selected source files to the new directory
(if you so decided), and create a number of project files there. It will then
load a new project, which has the same properties as the previous
one, except that some files are found transparently in the new directory,
and object files resulting from the compilation are create into that
directory as opposed to the object directory of the original project.
</p>
<a name="Adding-files-to-extending-projects"></a>
<h4 class="subsection">7.4.3 Adding files to extending projects</h4>
<a name="index-Add-To-Extending-Project"></a>
<p>Once you have loaded an extending project in GPS, things work mostly
transparently. If you open a file through the <code>File->Open From Project</code>
dialog, the files found in the local directory of your extending project
will be picked up first.
</p>
<p>The build actions will create object files in the extending project’s
directory, leaving the original project untouched.
</p>
<p>It might happen that you want to start working on a source file that you
had not added in the extending project when it was created. You can of course
edit the file found in the original project, provided you have write access
to it. However, it is generally better to edit it in the context of the
extending project, so that the original project can be shared among
developers.
</p>
<p>This can be done by clicking on the file in the <code>Project View</code>, then
selecting the menu <code>Add To Extending Project</code>. This will popup a
dialog asking whether you want GPS to copy the file to the extending
project’s directory for you. GPS might also create some new project files
in that directory if necessary, and automatically reload the project as
needed. From then on, if you use the menu <code>File->Open From Project</code>,
GPS will first see the file from the extending project.
</p>
<p>Note that open editors will still be editing the same file they were before,
so you should open the new file if needed.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Project-View.html#Project-View" accesskey="n" rel="next">Project View</a>, Previous: <a href="Scenarios-and-Configuration-Variables.html#Scenarios-and-Configuration-Variables" accesskey="p" rel="previous">Scenarios and Configuration Variables</a>, Up: <a href="Project-Handling.html#Project-Handling" accesskey="u" rel="up">Project Handling</a> [<a href="Index-table.html#Index-table" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|