1 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>5. Makefiles and Environment Variables</title><link rel="stylesheet" href="../xml/XSLCustomizationLayer/G4HTMLStylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.71.1"><link rel="start" href="index.html" title="Geant4 User's Guide for Application Developers"><link rel="up" href="apa.html" title="Appendix . Appendix"><link rel="prev" href="apas04.html" title="4. C++ Standard Template Library"><link rel="next" href="apas06.html" title="6. Step-by-Step Installation Guides"><script language="JavaScript"> |
---|
2 | function remote_win(fName) |
---|
3 | { |
---|
4 | var url = "AllResources/Detector/geometry.src/" + fName; |
---|
5 | RemoteWin=window.open(url,"","resizable=no,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,copyhistory=0,width=520,height=520") |
---|
6 | RemoteWin.creator=self |
---|
7 | } |
---|
8 | </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">5. |
---|
9 | Makefiles and Environment Variables |
---|
10 | </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apas04.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><th width="60%" align="center">Appendix . |
---|
11 | Appendix |
---|
12 | </th><td width="20%" align="right"> <a accesskey="n" href="apas06.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sect.MkflEnvVar"></a>5. |
---|
13 | Makefiles and Environment Variables |
---|
14 | </h2></div></div></div><p> |
---|
15 | This section describes how the GNUmake infrastructure is |
---|
16 | implemented in Geant4 and provides a quick reference guide for the |
---|
17 | user/installer about the most important environment variables |
---|
18 | defined. |
---|
19 | </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="sect.MkflEnvVar.GNUG4"></a>5.1. |
---|
20 | The GNUmake system in Geant4 |
---|
21 | </h3></div></div></div><p> |
---|
22 | As described in <a href="ch02.html#sect.HowToDefMain" title="2.1. |
---|
23 | How to Define the main() Program |
---|
24 | ">Section 2.1</a> of the |
---|
25 | Installation Guide, the GNUmake process in |
---|
26 | Geant4 is mainly controlled by the following GNUmake script files |
---|
27 | (<code class="literal">*.gmk</code> scripts are placed in |
---|
28 | <code class="literal">$G4INSTALL/config</code>): |
---|
29 | |
---|
30 | </p><div class="itemizedlist"><ul type="disc" compact><li><p> |
---|
31 | <code class="literal">architecture.gmk</code>: defining all the architecture |
---|
32 | specific settings and paths. System settings are stored in |
---|
33 | <code class="literal">$G4INSTALL/config/sys</code> in separate files. |
---|
34 | </p></li><li><p> |
---|
35 | <code class="literal">common.gmk</code>: defining all general GNUmake rules for |
---|
36 | building objects and libraries. |
---|
37 | </p></li><li><p> |
---|
38 | <code class="literal">globlib.gmk</code>: defining all general GNUmake rules for |
---|
39 | building compound libraries. |
---|
40 | </p></li><li><p> |
---|
41 | <code class="literal">binmake.gmk</code>: defining the general GNUmake rules for |
---|
42 | building executables. |
---|
43 | </p></li><li><p> |
---|
44 | <code class="literal">GNUmake</code> scripts: placed inside each directory in the |
---|
45 | G4 distribution and defining directives specific to build a library |
---|
46 | (or a set of sub-libraries) or and executable. |
---|
47 | </p></li></ul></div><p> |
---|
48 | </p><p> |
---|
49 | To build a single library (or a set of sub-libraries) or an |
---|
50 | executable, you must explicitly change your current directory to |
---|
51 | the one you're interested in and invoke the "<code class="literal">gmake</code>" |
---|
52 | command from there ("<code class="literal">gmake global</code>" for building a |
---|
53 | compound library). Here is a list of the basic commands or GNUmake |
---|
54 | "targets" one can invoke to build libraries and/or executables: |
---|
55 | |
---|
56 | </p><div class="itemizedlist"><ul type="disc" compact><li><p> |
---|
57 | <code class="literal">gmake</code> |
---|
58 | </p><p> |
---|
59 | starts the compilation process for building a kernel library or a |
---|
60 | library associated with an example. Kernel libraries are built with |
---|
61 | maximum granularity, i.e. if a category is a compound, this command |
---|
62 | will build all the related sub-libraries, |
---|
63 | <span class="bold"><strong>not</strong></span> the compound one. |
---|
64 | The top level <code class="literal">GNUmakefile</code> in |
---|
65 | <code class="literal">$G4INSTALL/source</code> will also build in this case a |
---|
66 | dependency map <code class="literal">libname.map</code> of each library to establish |
---|
67 | the linking order automatically at the <code class="literal">bin</code> step. The map |
---|
68 | will be placed in <code class="literal">$G4LIB/$G4SYSTEM</code>. |
---|
69 | </p><p> |
---|
70 | </p></li><li><p> |
---|
71 | <code class="literal">gmake global</code> |
---|
72 | </p><p> |
---|
73 | starts the compilation process to build a single compound kernel |
---|
74 | library per category. If issued after "gmake", both 'granular' and |
---|
75 | 'compound' libraries will be available (NOTE: this will |
---|
76 | consistently increase the disk space required. Compound libraries |
---|
77 | will then be selected by default at link time, unless |
---|
78 | G4LIB_USE_GRANULAR is specified). |
---|
79 | </p><p> |
---|
80 | </p></li><li><p> |
---|
81 | <code class="literal">gmake bin</code> or <code class="literal">gmake</code> (only for |
---|
82 | examples/) |
---|
83 | </p><p> |
---|
84 | starts the compilation process to build an executable. This command |
---|
85 | will build implicitly the library associated with the example and |
---|
86 | link the final application. It assumes <span class="bold"><strong>all</strong></span> |
---|
87 | kernel libraries are already generated and placed in the correct |
---|
88 | <code class="literal">$G4INSTALL</code> path defined for them. |
---|
89 | </p><p> |
---|
90 | |
---|
91 | </p><p> |
---|
92 | The linking order is controlled automatically in case libraries |
---|
93 | have been built with maximum granularity, and the link list is |
---|
94 | generated on the fly. |
---|
95 | </p><p> |
---|
96 | </p></li><li><p> |
---|
97 | <code class="literal">make dll</code> |
---|
98 | </p><p> |
---|
99 | On Windows systems this will start the compilation process to build |
---|
100 | single compound kernel library per category and generate Dynamic |
---|
101 | Link Libraries (DLLs). Once the libraries are generated, the |
---|
102 | process will imply also the deletion of all temporary files |
---|
103 | generated during the compilation. |
---|
104 | </p><p> |
---|
105 | </p></li></ul></div><p> |
---|
106 | </p><h5><a name="id558943"></a> |
---|
107 | <code class="literal">lib/ bin/</code> and <code class="literal">tmp/</code> directories |
---|
108 | </h5><p> |
---|
109 | The <code class="literal">$G4INSTALL</code> environment variable specifies where |
---|
110 | the installation of the Geant4 toolkit should take place, therefore |
---|
111 | kernel libraries will be placed in <code class="literal">$G4INSTALL/lib</code>. The |
---|
112 | <code class="literal">$G4WORKDIR</code> environment variable is set by the user and |
---|
113 | specifies the path to the user working directory; temporary files |
---|
114 | (object-files and data products of the installation process of |
---|
115 | Geant4) will be placed in <code class="literal">$G4WORKDIR/tmp</code>, according to |
---|
116 | the system architecture used. Binaries will be placed in |
---|
117 | <code class="literal">$G4WORKDIR/bin</code>, according to the system architecture |
---|
118 | used. The path to <code class="literal">$G4WORKDIR/bin/$G4SYSTEM</code> should be |
---|
119 | added to <code class="literal">$PATH</code> in the user environment. |
---|
120 | </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="sect.MkflEnvVar.EnvVar"></a>5.2. |
---|
121 | Environment variables |
---|
122 | </h3></div></div></div><p> |
---|
123 | Here is a list of the most important environment variables defined |
---|
124 | within the Geant4 <code class="literal">GNUmake</code> infrastructure, with a short |
---|
125 | explanation of their use. |
---|
126 | </p><p> |
---|
127 | <span class="bold"><strong>We recommend that those environment variables listed here and |
---|
128 | marked with (*) NOT be overriden or set (explicitly or by |
---|
129 | accident). They are already set and used internally in the default |
---|
130 | setup !</strong></span> |
---|
131 | </p><h5><a name="id559047"></a> |
---|
132 | System configuration |
---|
133 | </h5><p> |
---|
134 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
135 | $CLHEP_BASE_DIR |
---|
136 | </span></dt><dd> |
---|
137 | Specifies the path where the CLHEP package is installed in your system. |
---|
138 | </dd><dt><span class="term"> |
---|
139 | $G4SYSTEM |
---|
140 | </span></dt><dd><p> |
---|
141 | Defines the architecture and compiler currently used. |
---|
142 | </p><p> |
---|
143 | <span class="bold"><strong>NOTE</strong></span>: This variable is set automatically |
---|
144 | if the <code class="literal">Configure</code> script is adopted for the |
---|
145 | installation. This will result in the proper settings also for |
---|
146 | configuring the environment with the generated shell scripts |
---|
147 | <code class="literal">env.[c]sh</code>. |
---|
148 | </p></dd></dl></div><p> |
---|
149 | </p><h5><a name="id559109"></a> |
---|
150 | Installation paths |
---|
151 | </h5><p> |
---|
152 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
153 | $G4INSTALL |
---|
154 | </span></dt><dd> |
---|
155 | Defines the path where the Geant4 toolkit should be installed. It |
---|
156 | should be set by the system installer. By default, it sets to |
---|
157 | <code class="literal">$HOME/geant4</code>, assuming the Geant4 distribution |
---|
158 | is placed in <code class="literal">$HOME</code>. |
---|
159 | </dd><dt><span class="term"> |
---|
160 | $G4BASE <span class="bold"><strong>(*)</strong></span> |
---|
161 | </span></dt><dd> |
---|
162 | Defines the path to the source code. Internally used to define |
---|
163 | <code class="literal">$CPPFLAGS</code> and <code class="literal">$LDFLAGS</code> for |
---|
164 | -I and -L directives. It has to be set to |
---|
165 | <code class="literal">$G4INSTALL/src</code>. |
---|
166 | </dd><dt><span class="term"> |
---|
167 | $G4WORKDIR |
---|
168 | </span></dt><dd> |
---|
169 | Defines the path for the user's workdir for Geant4. It is set by |
---|
170 | default to <code class="literal">$HOME/geant4</code>, assuming the user's |
---|
171 | working directory for Geant4 is placed in <code class="literal">$HOME</code>. |
---|
172 | </dd><dt><span class="term"> |
---|
173 | $G4INCLUDE |
---|
174 | </span></dt><dd> |
---|
175 | Defines the path where source header files may be mirrored at |
---|
176 | installation by issuing <code class="literal">gmake includes</code> (default |
---|
177 | is set to <code class="literal">$G4INSTALL/include</code>) |
---|
178 | </dd><dt><span class="term"> |
---|
179 | $G4BIN, $G4BINDIR <span class="bold"><strong>(*)</strong></span> |
---|
180 | </span></dt><dd> |
---|
181 | Used by the system to specify the place where to store executables. |
---|
182 | By default they're set to <code class="literal">$G4WORKDIR/bin</code> and |
---|
183 | <code class="literal">$G4BIN/$G4SYSTEM</code> respectively. The path to |
---|
184 | <code class="literal">$G4WORKDIR/bin/$G4SYSTEM</code> should be added to |
---|
185 | <code class="literal">$PATH</code> in the user environment. |
---|
186 | <code class="literal">$G4BIN</code> can be overridden. |
---|
187 | </dd><dt><span class="term"> |
---|
188 | $G4TMP, $G4TMPDIR <span class="bold"><strong>(*)</strong></span> |
---|
189 | </span></dt><dd> |
---|
190 | Used by the system to specify the place where to store temporary |
---|
191 | files products of the compilation/build of a user application or |
---|
192 | test. By default they're set to <code class="literal">$G4WORKDIR/tmp</code> |
---|
193 | and <code class="literal">$G4TMP/$G4SYSTEM</code> respectively. |
---|
194 | <code class="literal">$G4TMP</code> can be overridden. |
---|
195 | </dd><dt><span class="term"> |
---|
196 | $G4LIB, $G4LIBDIR <span class="bold"><strong>(*)</strong></span> |
---|
197 | </span></dt><dd> |
---|
198 | Used by the system to specify the place where to store libraries. |
---|
199 | By default they're set to <code class="literal">$G4INSTALL/lib</code> and |
---|
200 | <code class="literal">$G4LIB/$G4SYSTEM</code> respectively. |
---|
201 | <code class="literal">$G4LIB</code> can be overridden. |
---|
202 | </dd></dl></div><p> |
---|
203 | </p><h5><a name="id559345"></a> |
---|
204 | Build specific |
---|
205 | </h5><p> |
---|
206 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
207 | $G4TARGET |
---|
208 | </span></dt><dd> |
---|
209 | Specifies the target (name of the source file defining the main()) |
---|
210 | of the application/example to be built. This variable is set |
---|
211 | automatically for the examples and tests placed in |
---|
212 | <code class="literal">$G4INSTALL/examples</code>. |
---|
213 | </dd><dt><span class="term"> |
---|
214 | $G4EXEC_BUILD |
---|
215 | </span></dt><dd> |
---|
216 | Flag specifying if to use a secondary template repository or not |
---|
217 | for handling template instantiations at the time of building a user |
---|
218 | application/example. For internal category tests in Geant4, this |
---|
219 | variable is already in the related GNUmakefile. It's however not |
---|
220 | needed for examples and tests in <code class="literal">$G4INSTALL/examples</code>, |
---|
221 | where class names are already mangled and different each other. It |
---|
222 | applies only on those compilers which make use of template |
---|
223 | repositories (see Appendix A.2 of this Guide). The secondary |
---|
224 | template repository is set to <code class="literal">$G4TREP/exec</code>. |
---|
225 | </dd><dt><span class="term"> |
---|
226 | $G4DEBUG |
---|
227 | </span></dt><dd> |
---|
228 | Specifies to compile the code (libraries or examples) including |
---|
229 | symbolic information in the object code for debugging. The size of |
---|
230 | the generated object code can increase considerably. By default, |
---|
231 | code is compiled in optimised mode (<code class="literal">$G4OPTIMISE</code> set). |
---|
232 | </dd><dt><span class="term"> |
---|
233 | $G4NO_OPTIMISE |
---|
234 | </span></dt><dd> |
---|
235 | Specifies to compile the code (libraries or examples) without |
---|
236 | compiler optimisation. |
---|
237 | </dd><dt><span class="term"> |
---|
238 | $G4_NO_VERBOSE |
---|
239 | </span></dt><dd> |
---|
240 | Geant4 code is compiled by default in high verbosity mode |
---|
241 | (<code class="literal">$G4VERBOSE</code> flag set). For better performance, |
---|
242 | verbosity code can be left out by defining <code class="literal">$G4_NO_VERBOSE</code>. |
---|
243 | </dd><dt><span class="term"> |
---|
244 | $G4LIB_BUILD_SHARED |
---|
245 | </span></dt><dd> |
---|
246 | Flag specifying if to build kernel libraries as shared libraries |
---|
247 | (libraries will be then used by default). If not set, static |
---|
248 | archive libraries are built by default. |
---|
249 | </dd><dt><span class="term"> |
---|
250 | $G4LIB_BUILD_STATIC |
---|
251 | </span></dt><dd> |
---|
252 | Flag specifying if to build kernel libraries as static archive |
---|
253 | libraries in addition to shared libraries (in case |
---|
254 | <code class="literal">$G4LIB_BUILD_SHARED</code> is set as well). |
---|
255 | </dd><dt><span class="term"> |
---|
256 | $G4LIB_BUILD_DLL <span class="bold"><strong>(*)</strong></span> |
---|
257 | </span></dt><dd> |
---|
258 | Internal flag for specifying to build DLL kernel libraries for |
---|
259 | Windows systems. The flag is automatically set when requested to |
---|
260 | build DLLs. |
---|
261 | </dd><dt><span class="term"> |
---|
262 | $G4LIB_USE_DLL |
---|
263 | </span></dt><dd> |
---|
264 | For Windows systems only. Flag to specify to build an application |
---|
265 | using the installed DLL kernel libraries for Windows systems. It is |
---|
266 | required to have this flag set in the environment in order to |
---|
267 | successfully build an application if the DLL libraries have been |
---|
268 | installed. |
---|
269 | </dd><dt><span class="term"> |
---|
270 | $G4LIB_USE_GRANULAR |
---|
271 | </span></dt><dd> |
---|
272 | To force usage of "granular" libraries against "compound" libraries |
---|
273 | at link time in case both have been installed. The Geant4 building |
---|
274 | system chooses "compound" libraries by default, if installed. |
---|
275 | </dd><dt><span class="term"> |
---|
276 | |
---|
277 | </span></dt><dd></dd></dl></div><p> |
---|
278 | </p><h5><a name="id559537"></a> |
---|
279 | UI specific |
---|
280 | </h5><p> |
---|
281 | The most relevant flags for User Interface drivers are just |
---|
282 | listed here. A more detailed description is given also in section |
---|
283 | 2. of this User's Guide. |
---|
284 | </p><p> |
---|
285 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
286 | G4UI_USE_TERMINAL |
---|
287 | </span></dt><dd> |
---|
288 | Specifies to use dumb terminal interface in the application to be |
---|
289 | built (default). |
---|
290 | </dd><dt><span class="term"> |
---|
291 | G4UI_USE_TCSH |
---|
292 | </span></dt><dd> |
---|
293 | Specifies to use the tcsh-shell like interface in the application |
---|
294 | to be built. |
---|
295 | </dd><dt><span class="term"> |
---|
296 | G4UI_BUILD_XM_SESSION, G4UI_BUILD_XAW_SESSION |
---|
297 | </span></dt><dd> |
---|
298 | Specifies to include in kernel library the <span class="emphasis"><em>XM</em></span> or |
---|
299 | <span class="emphasis"><em>XAW</em></span> Motif-based user interfaces. |
---|
300 | </dd><dt><span class="term"> |
---|
301 | G4UI_USE_XM, G4UI_USE_XAW |
---|
302 | </span></dt><dd> |
---|
303 | Specifies to use the <span class="emphasis"><em>XM</em></span> or <span class="emphasis"><em>XAW</em></span> |
---|
304 | interfaces in the application to be built. |
---|
305 | </dd><dt><span class="term"> |
---|
306 | G4UI_BUILD_WIN32_SESSION |
---|
307 | </span></dt><dd> |
---|
308 | Specifies to include in kernel library the WIN32 terminal interface |
---|
309 | for Windows systems. |
---|
310 | </dd><dt><span class="term"> |
---|
311 | G4UI_USE_WIN32 |
---|
312 | </span></dt><dd> |
---|
313 | Specifies to use the WIN32 interfaces in the application to be |
---|
314 | built on Windows systems. |
---|
315 | </dd><dt><span class="term"> |
---|
316 | G4UI_BUILD_QT_SESSION |
---|
317 | </span></dt><dd> |
---|
318 | Specifies to include in kernel library the Qt terminal interface. |
---|
319 | </dd><dt><span class="term"> |
---|
320 | G4UI_USE_QT |
---|
321 | </span></dt><dd> |
---|
322 | Specifies to use the Qt interfaces in the application to be |
---|
323 | built. |
---|
324 | </dd><dt><span class="term"> |
---|
325 | G4UI_NONE |
---|
326 | </span></dt><dd> |
---|
327 | If set, no UI sessions nor any UI libraries are built. This can be |
---|
328 | useful when running a pure batch job or in a user framework having |
---|
329 | its own UI system. |
---|
330 | </dd></dl></div><p> |
---|
331 | </p><h5><a name="id559675"></a> |
---|
332 | Visualization specific |
---|
333 | </h5><p> |
---|
334 | The most relevant flags for visualization graphics drivers are |
---|
335 | just listed here. A description of these variables is given also in |
---|
336 | section 2. of this User's Guide. |
---|
337 | </p><p> |
---|
338 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
339 | $G4VIS_BUILD_OPENGLX_DRIVER |
---|
340 | </span></dt><dd> |
---|
341 | Specifies to build kernel library for visualization including the |
---|
342 | OpenGL driver with X11 extension. It requires <code class="literal">$OGLHOME</code> |
---|
343 | set (path to OpenGL installation). |
---|
344 | </dd><dt><span class="term"> |
---|
345 | $G4VIS_USE_OPENGLX |
---|
346 | </span></dt><dd> |
---|
347 | Specifies to use OpenGL graphics with X11 extension in the |
---|
348 | application to be built. |
---|
349 | </dd><dt><span class="term"> |
---|
350 | $G4VIS_BUILD_OPENGLXM_DRIVER |
---|
351 | </span></dt><dd> |
---|
352 | Specifies to build kernel library for visualization including the |
---|
353 | OpenGL driver with XM extension. It requires <code class="literal">$OGLHOME</code> |
---|
354 | set (path to OpenGL installation). |
---|
355 | </dd><dt><span class="term"> |
---|
356 | $G4VIS_USE_OPENGLXM |
---|
357 | </span></dt><dd> |
---|
358 | Specifies to use OpenGL graphics with XM extension in the |
---|
359 | application to be built. |
---|
360 | </dd><dt><span class="term"> |
---|
361 | G4VIS_BUILD_OPENGLQT_DRIVER |
---|
362 | </span></dt><dd> |
---|
363 | Specifies to build kernel library for visualization including the |
---|
364 | OpenGL driver with Qt extension. |
---|
365 | </dd><dt><span class="term"> |
---|
366 | G4VIS_USE_OPENGLQT |
---|
367 | </span></dt><dd> |
---|
368 | Specifies to use OpenGL graphics with Qt extension in the |
---|
369 | application to be built. |
---|
370 | </dd><dt><span class="term"> |
---|
371 | $G4VIS_BUILD_OI_DRIVER |
---|
372 | </span></dt><dd> |
---|
373 | Specifies to build kernel library for visualization including the |
---|
374 | OpenInventor driver. It requires <code class="literal">$OIHOME</code> set |
---|
375 | (paths to the <code class="literal">OpenInventor</code> installation). |
---|
376 | </dd><dt><span class="term"> |
---|
377 | $G4VIS_USE_OI |
---|
378 | </span></dt><dd> |
---|
379 | Specifies to use OpenInventor graphics in the application to be |
---|
380 | built. |
---|
381 | </dd><dt><span class="term"> |
---|
382 | $G4VIS_BUILD_OIX_DRIVER |
---|
383 | </span></dt><dd> |
---|
384 | Specifies to build the driver for the free X11 version of |
---|
385 | OpenInventor. |
---|
386 | </dd><dt><span class="term"> |
---|
387 | $G4VIS_USE_OIX |
---|
388 | </span></dt><dd> |
---|
389 | Specifies to use the free X11 version of OpenInventor. |
---|
390 | </dd><dt><span class="term"> |
---|
391 | $G4VIS_BUILD_RAYTRACERX_DRIVER |
---|
392 | </span></dt><dd> |
---|
393 | Specifies to build kernel library for visualization including the |
---|
394 | Ray-Tracer driver with X11 extension. It requires <code class="literal">X11</code> |
---|
395 | installed in the system. |
---|
396 | </dd><dt><span class="term"> |
---|
397 | $G4VIS_USE_RAYTRACERX |
---|
398 | </span></dt><dd> |
---|
399 | Specifies to use the X11 version of the Ray-Tracer driver. |
---|
400 | </dd><dt><span class="term"> |
---|
401 | $G4VIS_BUILD_OIWIN32_DRIVER |
---|
402 | </span></dt><dd> |
---|
403 | Specifies to build the driver for the free X11 version of |
---|
404 | OpenInventor on Windows systems. |
---|
405 | </dd><dt><span class="term"> |
---|
406 | $G4VIS_USE_OIWIN32 |
---|
407 | </span></dt><dd> |
---|
408 | Specifies to use the free X11 version of OpenInventor on Windows |
---|
409 | systems. |
---|
410 | </dd><dt><span class="term"> |
---|
411 | $G4VIS_BUILD_DAWN_DRIVER |
---|
412 | </span></dt><dd> |
---|
413 | Specifies to build kernel library for visualization including the |
---|
414 | driver for DAWN. |
---|
415 | </dd><dt><span class="term"> |
---|
416 | $G4VIS_USE_DAWN |
---|
417 | </span></dt><dd> |
---|
418 | Specifies to use DAWN as a possible graphics renderer in the |
---|
419 | application to be built. |
---|
420 | </dd><dt><span class="term"> |
---|
421 | $G4DAWN_HOST_NAME |
---|
422 | </span></dt><dd> |
---|
423 | To specify the hostname for use with the DAWN-network driver. |
---|
424 | </dd><dt><span class="term"> |
---|
425 | $G4VIS_NONE |
---|
426 | </span></dt><dd> |
---|
427 | If specified, no visualization drivers will be built or used. |
---|
428 | </dd></dl></div><p> |
---|
429 | </p><h5><a name="id559930"></a> |
---|
430 | Hadronic physics specific |
---|
431 | </h5><p> |
---|
432 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
433 | $G4NEUTRONHP_USE_ONLY_PHOTONEVAPORATION |
---|
434 | </span></dt><dd> |
---|
435 | When using high precision neutron code, user may choose to force the |
---|
436 | use of Photon Evaporation model instead of using the neutron capture |
---|
437 | final state data. |
---|
438 | </dd><dt><span class="term"> |
---|
439 | $G4NEUTRONHP_SKIP_MISSING_ISOTOPES |
---|
440 | </span></dt><dd> |
---|
441 | User can force high precison neutron code to use only exact isotope |
---|
442 | data files instead of allowing nearby isotope files to be used. If the |
---|
443 | exact file is not available, the cross section will be set to zero and a |
---|
444 | warning message will be printed. |
---|
445 | </dd><dt><span class="term"> |
---|
446 | $G4NEUTRONHP_NEGLECT_DOPPLER |
---|
447 | </span></dt><dd> |
---|
448 | Sets neglecting doppler broadening mode for boosting performance. |
---|
449 | </dd></dl></div><p> |
---|
450 | </p><h5><a name="id559980"></a> |
---|
451 | <code class="literal">GDML</code>, <code class="literal">zlib</code> and <code class="literal">g3tog4</code> modules |
---|
452 | </h5><p> |
---|
453 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
454 | $G4LIB_BUILD_GDML |
---|
455 | </span></dt><dd> |
---|
456 | If set, triggers compilation of a plugin module <code class="literal">gdml</code> |
---|
457 | for allowing import/export of detector description setups (geometrical |
---|
458 | volumes, solids, materials, etc.). By default, the flag is not set; if |
---|
459 | set, the path to the installation of XercesC package must be specified |
---|
460 | through the variable <code class="literal">$XERCESCROOT</code>. |
---|
461 | </dd><dt><span class="term"> |
---|
462 | $G4LIB_USE_GDML |
---|
463 | </span></dt><dd> |
---|
464 | Specifies to use the <code class="literal">gdml</code> module. The flag is |
---|
465 | automatically set if <code class="literal">$G4LIB_BUILD_GDML</code> is set in the environment. |
---|
466 | </dd><dt><span class="term"> |
---|
467 | $G4LIB_BUILD_ZLIB |
---|
468 | </span></dt><dd> |
---|
469 | If set, triggers compilation of a specific <code class="literal">zlib</code> |
---|
470 | module for the compression of output files (mainly in use currently |
---|
471 | for the HepRep graphics driver). By default, the flag is not set and |
---|
472 | the built-in system library for compression is adopted instead. Setting |
---|
473 | this flag will also implicitely set the flag below. |
---|
474 | </dd><dt><span class="term"> |
---|
475 | $G4LIB_USE_ZLIB |
---|
476 | </span></dt><dd> |
---|
477 | Specifies to use the <code class="literal">zlib</code> module, either system |
---|
478 | built-in or Geant4 specific. |
---|
479 | </dd><dt><span class="term"> |
---|
480 | $G4LIB_BUILD_G3TOG4 |
---|
481 | </span></dt><dd> |
---|
482 | If set, triggers compilation of the <code class="literal">g3tog4</code> module for |
---|
483 | conversions of simple legacy geometries descriptions to Geant4. By |
---|
484 | default, the flag is not set and the module's library is not built. |
---|
485 | Setting this flag will also implicitely set the flag below. |
---|
486 | </dd><dt><span class="term"> |
---|
487 | $G4LIB_USE_G3TOG4 |
---|
488 | </span></dt><dd> |
---|
489 | Specifies to use the <code class="literal">g3tog4</code> module, assuming the related |
---|
490 | library has been already installed. |
---|
491 | </dd></dl></div><p> |
---|
492 | </p><h5><a name="id560130"></a> |
---|
493 | Analysis specific |
---|
494 | </h5><p> |
---|
495 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
496 | $G4ANALYSIS_USE |
---|
497 | </span></dt><dd> |
---|
498 | Specifies to activate the appropriate environment for analysis, if |
---|
499 | an application includes code for histogramming based on |
---|
500 | <span class="emphasis"><em>AIDA</em></span>. Additional setup variables are required |
---|
501 | (<code class="literal">$G4ANALYSIS_AIDA_CONFIG_CFLAGS</code>, |
---|
502 | <code class="literal">$G4ANALYSIS_AIDA_CONFIG_LIBS</code>) to define config options |
---|
503 | for AIDA ("<code class="literal">aida-config --cflags</code>" and |
---|
504 | "<code class="literal">aida-config --libs</code>"). See installation instructions |
---|
505 | of the specific analysis tools for details. |
---|
506 | </dd></dl></div><p> |
---|
507 | </p><h5><a name="id560186"></a> |
---|
508 | Directory paths to Physics Data |
---|
509 | </h5><p> |
---|
510 | </p><div class="variablelist"><dl><dt><span class="term"> |
---|
511 | $G4NEUTRONHPDATA |
---|
512 | </span></dt><dd> |
---|
513 | Path to external data set for Neutron Scattering processes. |
---|
514 | </dd><dt><span class="term"> |
---|
515 | $G4LEDATA |
---|
516 | </span></dt><dd> |
---|
517 | Path to external data set for low energy electromagnetic |
---|
518 | processes. |
---|
519 | </dd><dt><span class="term"> |
---|
520 | $G4LEVELGAMMADATA |
---|
521 | </span></dt><dd> |
---|
522 | Path to the data set for Photon Evaporation. |
---|
523 | </dd><dt><span class="term"> |
---|
524 | $G4RADIOACTIVEDATA |
---|
525 | </span></dt><dd> |
---|
526 | Path to the data set for Radiative Decay processes. |
---|
527 | </dd><dt><span class="term"> |
---|
528 | $G4ABLADATA |
---|
529 | </span></dt><dd> |
---|
530 | Path to nuclear shell effects data set for INCL/ABLA hadronic model. |
---|
531 | </dd></dl></div><p> |
---|
532 | </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="sect.MkflEnvVar.LnkExtLib"></a>5.3. |
---|
533 | Linking External Libraries with Geant4 |
---|
534 | </h3></div></div></div><p> |
---|
535 | The Geant4 GNUmake infrastructure allows to extend the link list of |
---|
536 | libraries with external (or user defined) packages which may be |
---|
537 | required for some user's applications to generate the final |
---|
538 | executable. |
---|
539 | </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sect.MkflEnvVar.LnkExtLib.AddExtlibNoG4"></a>5.3.1. |
---|
540 | Adding external libraries which do *not* use Geant4 |
---|
541 | </h4></div></div></div><p> |
---|
542 | In the <code class="literal">GNUmakefile</code> of your application, before including |
---|
543 | <code class="literal">binmake.gmk</code>, specify the extra library in |
---|
544 | <code class="literal">EXTRALIBS</code> either using the <code class="literal">-L...-l...</code> |
---|
545 | syntax or by specifying the full pathname, e.g.: |
---|
546 | |
---|
547 | </p><div class="informalexample"><pre class="programlisting"> |
---|
548 | EXTRALIBS := -L<your-path>/lib -l<myExtraLib> |
---|
549 | </pre></div><p> |
---|
550 | or |
---|
551 | </p><div class="informalexample"><pre class="programlisting"> |
---|
552 | EXTRALIBS := <your-path>/lib/lib<myExtraLib>.a |
---|
553 | </pre></div><p> |
---|
554 | </p><p> |
---|
555 | You may also specify <code class="literal">EXTRA_LINK_DEPENDENCIES</code>, which is |
---|
556 | added to the dependency of the target executable, and you may also |
---|
557 | specify a rule for making it, e.g.: |
---|
558 | |
---|
559 | </p><div class="informalexample"><pre class="programlisting"> |
---|
560 | EXTRA_LINK_DEPENDENCIES := <your-path>/lib/lib<myExtraLib>.a |
---|
561 | |
---|
562 | <your-path>/lib/lib<myExtraLib>.a: |
---|
563 | cd <your-path>/lib; $(MAKE) |
---|
564 | </pre></div><p> |
---|
565 | </p><p> |
---|
566 | Note that you almost certainly need to augment <code class="literal">CPPFLAGS</code> |
---|
567 | for the header files of the external library, e.g.: |
---|
568 | |
---|
569 | </p><div class="informalexample"><pre class="programlisting"> |
---|
570 | CPPFLAGS+=-I<your-path>/include |
---|
571 | </pre></div><p> |
---|
572 | |
---|
573 | See <a href="apas05.html#programlist_MkflEnvVar_1" title="Example 86. |
---|
574 | An example of a customised GNUmakefile for an application or |
---|
575 | example using an external module not bound to Geant4. |
---|
576 | ">Example 86</a>. |
---|
577 | </p><p> |
---|
578 | </p><div class="example"><a name="programlist_MkflEnvVar_1"></a><p class="title"><b>Example 86. |
---|
579 | An example of a customised GNUmakefile for an application or |
---|
580 | example using an external module not bound to Geant4. |
---|
581 | </b></p><div class="example-contents"><pre class="programlisting"> |
---|
582 | # -------------------------------------------------------------------- |
---|
583 | # GNUmakefile for the application "sim" depending on module "Xplotter" |
---|
584 | # -------------------------------------------------------------------- |
---|
585 | |
---|
586 | name := sim |
---|
587 | G4TARGET := $(name) |
---|
588 | G4EXLIB := true |
---|
589 | |
---|
590 | CPPFLAGS += -I$(HOME)/Xplotter/include |
---|
591 | EXTRALIBS += -L$(HOME)/Xplotter/lib -lXplotter |
---|
592 | EXTRA_LINK_DEPENDENCIES := $(HOME)/Xplotter/lib/libXplotter.a |
---|
593 | |
---|
594 | .PHONY: all |
---|
595 | |
---|
596 | all: lib bin |
---|
597 | |
---|
598 | include $(G4INSTALL)/config/binmake.gmk |
---|
599 | |
---|
600 | $(HOME)/Xplotter/lib/libXplotter.a: |
---|
601 | cd $(HOME)/Xplotter; $(MAKE) |
---|
602 | </pre></div></div><p><br class="example-break"> |
---|
603 | </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sect.MkflEnvVar.LnkExtLib.AddExtlibWithG4"></a>5.3.2. |
---|
604 | Adding external libraries which use Geant4 |
---|
605 | </h4></div></div></div><p> |
---|
606 | In addition to the above, specify, in <code class="literal">EXTRALIBSSOURCEDIRS</code>, |
---|
607 | a list of directories containing source files in its <code class="literal">src/</code> |
---|
608 | subdirectory. Thus, your <code class="literal">GNUmakefile</code> might contain: |
---|
609 | |
---|
610 | </p><div class="informalexample"><pre class="programlisting"> |
---|
611 | EXTRALIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a \ |
---|
612 | -L<your-path>/lib -l<myExtraLib> |
---|
613 | EXTRALIBSSOURCEDIRS += <your-path>/<myApp> <your-path>/<MyExtraModule> |
---|
614 | EXTRA_LINK_DEPENDENCIES := $(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a |
---|
615 | |
---|
616 | MYSOURCES := $(wildcard <your-path>/<myApp>/src/*cc) |
---|
617 | $(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a: $(MYSOURCES) |
---|
618 | cd <your-path>/<myApp>; $(MAKE) |
---|
619 | </pre></div><p> |
---|
620 | </p><p> |
---|
621 | See <a href="apas05.html#programlist_MkflEnvVar_2" title="Example 87. |
---|
622 | An example of a customised GNUmakefile for an |
---|
623 | application or example using external modules bound to Geant4. |
---|
624 | ">Example 87</a>. |
---|
625 | </p><p> |
---|
626 | </p><div class="example"><a name="programlist_MkflEnvVar_2"></a><p class="title"><b>Example 87. |
---|
627 | An example of a customised GNUmakefile for an |
---|
628 | application or example using external modules bound to Geant4. |
---|
629 | </b></p><div class="example-contents"><pre class="programlisting"> |
---|
630 | # ----------------------------------------------------------------- |
---|
631 | # GNUmakefile for the application "phys" depending on module "reco" |
---|
632 | # ----------------------------------------------------------------- |
---|
633 | |
---|
634 | name := phys |
---|
635 | G4TARGET := $(name) |
---|
636 | G4EXLIB := true |
---|
637 | |
---|
638 | EXTRALIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(name)/libphys.a \ |
---|
639 | -L$(HOME)/reco/lib -lreco |
---|
640 | EXTRALIBSSOURCEDIRS += $(HOME)/phys $(HOME)/reco |
---|
641 | EXTRA_LINK_DEPENDENCIES := $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(name)/libphys.a |
---|
642 | |
---|
643 | .PHONY: all |
---|
644 | all: lib bin |
---|
645 | |
---|
646 | include $(G4INSTALL)/config/binmake.gmk |
---|
647 | |
---|
648 | MYSOURCES := $(wildcard $(HOME)/phys/src/*cc) |
---|
649 | $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(name)/libphys.a: $(MYSOURCES) |
---|
650 | cd $(HOME)/phys; $(MAKE) |
---|
651 | </pre></div></div><p><br class="example-break"> |
---|
652 | </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apas04.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="apa.html"><img src="AllResources/IconsGIF/up.gif" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="apas06.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">4. |
---|
653 | C++ Standard Template Library |
---|
654 | </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="AllResources/IconsGIF/home.gif" alt="Home"></a></td><td width="40%" align="right" valign="top"> 6. |
---|
655 | Step-by-Step Installation Guides |
---|
656 | </td></tr></table></div></body></html> |
---|