File: hierarchy.html

package info (click to toggle)
boost-build 2.0-m12-2
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 8,692 kB
  • ctags: 6,963
  • sloc: ansic: 39,914; sh: 9,086; python: 6,120; xml: 5,524; cpp: 1,467; yacc: 456; asm: 353; makefile: 184
file content (131 lines) | stat: -rw-r--r-- 5,956 bytes parent folder | download
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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Project Hierarchies</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="../../index.html" title="Boost.Build V2 User Manual">
<link rel="up" href="../tutorial.html" title="Chapter3.Tutorial">
<link rel="prev" href="properties.html" title="Properties">
<link rel="next" href="libs.html" title="Dependent Targets">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="properties.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="libs.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="bbv2.tutorial.hierarchy"></a>Project Hierarchies</h2></div></div></div>
<p>So far we've only considered examples with one project
    &#8212;a. with one user-written Boost.Jam file,
    <code class="filename">Jamroot</code>). A typical large codebase would be
    composed of many projects organized into a tree. The top of the
    tree is called the <em class="firstterm">project root</em>.  Every
    subproject is defined by a file called
    <code class="filename">Jamfile</code> in a descendant directory of the
    project root.  The parent project of a subproject is defined by
    the nearest <code class="filename">Jamfile</code> or
    <code class="filename">Jamroot</code> file in an ancestor directory. For
    example, in the following directory layout:

</p>
<pre class="screen">
top/ 
  |
  +-- Jamroot
  |
  +-- app/
  |    |
  |    +-- Jamfile
  |    `-- app.cpp
  | 
  `-- util/
       |
       +-- foo/
       .    |
       .    +-- Jamfile
       .    `-- bar.cpp
</pre>
<p>

      the project root is <code class="filename">top/</code>.  The projects in
      <code class="filename">top/app/</code> and
      <code class="filename">top/util/foo/</code> are immediate children of the
      root project.

      </p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../doc/html/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
          When we refer to a &#8220;Jamfile,&#8221; set in normal
          type, we mean a file called either
          <code class="filename">Jamfile</code> or
          <code class="filename">Jamroot</code>.  When we need to be more
          specific, the filename will be set as
          &#8220;<code class="filename">Jamfile</code>&#8221; or
          &#8220;<code class="filename">Jamroot</code>.&#8221;
        </p></td></tr>
</table></div>
<p>
    </p>
<p>
      Projects inherit all attributes (such as requirements)
      from their parents.  Inherited requirements are combined with
      any requirements specified by the subproject.  
      For example, if <code class="filename">top/Jamroot</code> has

</p>
<pre class="programlisting">
&lt;include&gt;/home/ghost/local
</pre>
<p>

      in its requirements, then all of its subprojects will have it
      in their requirements, too.  Of course, any project can add
      include paths to those specified by its parents. <sup>[<a name="id2585755" href="#ftn.id2585755">4</a>]</sup> 
    More details can be found in 
      <a href="../advanced/projects.html" title="Projects">the section called &#8220;Projects&#8221;</a>.
    </p>
<p>
      Invoking <span><strong class="command">bjam</strong></span> without explicitly specifying
      any targets on the command line builds the project rooted in the
      current directory.  Building a project does not automatically
      cause its subprojects to be built unless the parent project's
      Jamfile explicitly requests it. In our example,
      <code class="filename">top/Jamroot</code> might contain:

</p>
<pre class="programlisting">
build-project app ;
</pre>
<p>

      which would cause the project in <code class="filename">top/app/</code>
      to be built whenever the project in <code class="filename">top/</code> is
      built. However, targets in <code class="filename">top/util/foo/</code>
      will be built only if they are needed by targets in
      <code class="filename">top/</code> or <code class="filename">top/app/</code>.
    </p>
<div class="footnotes">
<br><hr width="100" align="left">
<div class="footnote"><p><sup>[<a name="ftn.id2585755" href="#id2585755">4</a>] </sup>Many
      features will be overridden,
      rather than added-to, in subprojects.  See <a href="../reference/definitions.html#bbv2.reference.features.attributes" title="Feature Attributes">the section called &#8220;Feature Attributes&#8221;</a> for more
      information</p></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small></small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="properties.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorial.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="libs.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>