1
#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
8
%--------------------------------------------------------------------
10
%--------------------------------------------------------------------
12
\ifx\pdfoutput\undefined
13
\pdffalse % we are not running PDFLaTeX
15
\pdfoutput=1 % we are running PDFLaTeX
19
%--------------------------------------------------------------------
21
%--------------------------------------------------------------------
28
%% general document information
29
pdftitle = {AG++ Manual},
30
pdfsubject = {Dokumentation},
31
pdfkeywords = {AOP, AspectC++, ac++, pure-systems,g++},
32
pdfauthor = {Georg Blaschke},
33
pdfcreator = {\LaTeX\ with package \flqq hyperref\frqq},
34
pdfproducer = {pdfTeX-0.\the\pdftexversion\pdftexrevision},
37
colorlinks=true, % colored link
38
urlcolor=blue, % blue URL links
39
bookmarks=true, % generate bookmarks
40
bookmarksnumbered=true, % generate section numbers
41
pdfpagemode=None % don't open bookmarks
44
%% set document creation date to
45
\pdfinfo {/CreationDate (D:20061303000000)}
48
%--------------------------------------------------------------------
49
% create hyperrefs depending on the use of pdflatex
50
%--------------------------------------------------------------------
51
\newcommand\depref[2]{%
59
%--------------------------------------------------------------------
60
% setup pure-systems style
61
%--------------------------------------------------------------------
63
\usepackage{../styles/acc}
65
\doctype{Documentation:}
68
\resizebox{4cm}{!}{\includegraphics{../images/ac++logo}}}
73
% less than one half space between lines
87
\paperorientation portrait
90
\paragraph_separation indent
92
\quotes_language english
95
\paperpagestyle default
96
\tracking_changes false
114
\begin_layout Standard
115
\begin_inset LatexCommand \tableofcontents{}
123
\begin_layout Standard
135
\begin_layout Section
138
\begin_inset LatexCommand \label{sec:Introduction}
147
\begin_layout Standard
152
program provides a more intuitive frontend to the AspectC++ weaver (
156
) in a GNU environment.
157
The only preliminaries are a working installation of GNU C++ compiler,
158
which also can run within a cygwin environment.
159
It basically wraps the functionality of the aspect weaver and the c++ compiler
160
into one single program.
164
\begin_layout Section
167
\begin_inset LatexCommand \label{sec:Invocation}
176
\begin_layout Standard
181
is mainly influenced by the usage of the GNU g++ compiler and the synopsis
185
\begin_layout Standard
188
ag++ [options] [files...]
192
Let's say, you want to
207
\begin_layout Standard
214
in order to generate an object file.
224
a single file you simply invoke
227
\begin_layout Standard
234
the same way like you did before with
243
\begin_layout Subsection
247
\begin_layout Standard
252
is just a wrapper, it first generates the puma configuration file, then
262
The intermediate files generated by
266
are stored in the directory which is extracted from the
270
option or in current directory.
271
In some cases this may lead to a situation where the names of intermediate
272
files interfere with each other.
275
\begin_layout Subsection
279
\begin_layout Standard
280
All available options are summed up in the options table (see table
281
\begin_inset LatexCommand \ref{tab:options}
286
The column labeled with
290
shows if the option is taken over from
298
('X'), not supported by
302
('--') or modified by
307
All options which are taken over, are not described in this document.
308
Consult the AC++ Compiler Manual instead.
309
Options which are not listed in the option table are accounted as
318
options can not be automatically handled correctly by the options parser
328
options starting with
335
-pipe, -ansi, -dletters ,-remap
337
) have to be written between
342
\begin_inset LatexCommand \ref{sub:--Xcompiler}
351
\begin_inset LatexCommand \ref{sub:--Xweaver}
356
If such options passed to
364
they will be interpreted a
373
will be interpreted as
376
\begin_inset Quotes eld
382
\begin_inset Quotes erd
390
\begin_layout Standard
391
\begin_inset Float table
396
\begin_layout Standard
399
<lyxtabular version="3" rows="29" columns="3">
401
<column alignment="center" valignment="top" leftline="true" width="0">
402
<column alignment="center" valignment="top" leftline="true" width="0">
403
<column alignment="block" valignment="top" leftline="true" rightline="true" width="8cm">
404
<row topline="true" bottomline="true">
405
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
408
\begin_layout Standard
416
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
419
\begin_layout Standard
427
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
430
\begin_layout Standard
440
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
443
\begin_layout Standard
451
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
454
\begin_layout Standard
460
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
463
\begin_layout Standard
464
Only generate Puma configuration file
471
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
474
\begin_layout Standard
482
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
485
\begin_layout Standard
491
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
494
\begin_layout Standard
511
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
514
\begin_layout Standard
522
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
525
\begin_layout Standard
531
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
534
\begin_layout Standard
551
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
554
\begin_layout Standard
562
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
565
\begin_layout Standard
571
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
574
\begin_layout Standard
584
Keep woven source code files
591
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
594
\begin_layout Standard
602
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
605
\begin_layout Standard
611
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
614
\begin_layout Standard
631
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
634
\begin_layout Standard
642
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
645
\begin_layout Standard
651
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
654
\begin_layout Standard
664
Path to AspectC++ compiler
671
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
674
\begin_layout Standard
677
--config_command <arg>
682
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
685
\begin_layout Standard
691
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
694
\begin_layout Standard
695
Specify command which prints information about compiler
702
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
705
\begin_layout Standard
713
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
716
\begin_layout Standard
722
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
725
\begin_layout Standard
726
In case of doupt account following options as
736
<row topline="true" bottomline="true">
737
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
740
\begin_layout Standard
748
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
751
\begin_layout Standard
757
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
760
\begin_layout Standard
761
In case of doupt account following options as
772
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
775
\begin_layout Standard
778
-p|--path\InsetSpace ~
784
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
787
\begin_layout Standard
793
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
796
\begin_layout Standard
797
Defines a project directory
804
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
807
\begin_layout Standard
815
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
818
\begin_layout Standard
824
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
827
\begin_layout Standard
828
Specifies a target directory for saving
835
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
838
\begin_layout Standard
846
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
849
\begin_layout Standard
855
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
858
\begin_layout Standard
874
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
877
\begin_layout Standard
885
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
888
\begin_layout Standard
894
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
897
\begin_layout Standard
898
Name of the output file
905
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
908
\begin_layout Standard
916
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
919
\begin_layout Standard
925
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
928
\begin_layout Standard
929
Generate manipulated header files (short version
940
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
943
\begin_layout Standard
946
-a|--aspect_header <arg>
951
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
954
\begin_layout Standard
960
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
963
\begin_layout Standard
973
Name of aspect header file or
989
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
992
\begin_layout Standard
995
-r|--repository <arg>
1000
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1003
\begin_layout Standard
1009
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1012
\begin_layout Standard
1013
Name of the project repository
1019
<row topline="true">
1020
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1023
\begin_layout Standard
1031
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1034
\begin_layout Standard
1040
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1043
\begin_layout Standard
1044
Parser configuration file
1050
<row topline="true">
1051
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1054
\begin_layout Standard
1062
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1065
\begin_layout Standard
1071
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1074
\begin_layout Standard
1075
Disable generation of
1085
<row topline="true">
1086
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1089
\begin_layout Standard
1097
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1100
\begin_layout Standard
1106
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1109
\begin_layout Standard
1110
Allow AspectC++ keywords in normal project files
1116
<row topline="true" bottomline="true">
1117
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1120
\begin_layout Standard
1128
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1131
\begin_layout Standard
1137
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1140
\begin_layout Standard
1145
perform a full template analysis
1151
<row topline="true">
1152
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1155
\begin_layout Standard
1163
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1166
\begin_layout Standard
1172
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1175
\begin_layout Standard
1176
Enable back-end compiler problem workaround
1182
<row topline="true" bottomline="true">
1183
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1186
\begin_layout Standard
1194
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1197
\begin_layout Standard
1203
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1206
\begin_layout Standard
1207
Disable back-end compiler problem workaround
1213
<row topline="true">
1214
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1217
\begin_layout Standard
1225
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1228
\begin_layout Standard
1234
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1237
\begin_layout Standard
1242
warning that is suppressed by default
1248
<row topline="true" bottomline="true">
1249
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1252
\begin_layout Standard
1260
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1263
\begin_layout Standard
1269
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1272
\begin_layout Standard
1283
<row topline="true">
1284
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1287
\begin_layout Standard
1295
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1298
\begin_layout Standard
1304
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1307
\begin_layout Standard
1308
Include file search path
1314
<row topline="true">
1315
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1318
\begin_layout Standard
1326
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1329
\begin_layout Standard
1335
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1338
\begin_layout Standard
1345
<row topline="true">
1346
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1349
\begin_layout Standard
1357
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1360
\begin_layout Standard
1366
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1369
\begin_layout Standard
1376
<row topline="true" bottomline="true">
1377
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1380
\begin_layout Standard
1388
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1391
\begin_layout Standard
1397
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1400
\begin_layout Standard
1414
\begin_layout Caption
1415
\begin_inset LatexCommand \label{tab:options}
1423
Compiler Option Summary
1431
\begin_layout Subsubsection
1437
\begin_layout Standard
1438
Just create a parser configuration and quit afterwards.
1443
option specifies the name of the file.
1444
In any other case (no
1452
option) a configuration file with the name 'puma.config' will be generated
1453
in the directory where
1461
\begin_layout Subsubsection
1467
\begin_layout Standard
1468
Generate only woven source code files.
1473
option and one file the generated output is named after the argument of
1482
\begin_layout Subsubsection
1488
\begin_layout Standard
1489
This options differs only slightly from the
1502
it is mandatory to specify a project path, whereby
1506
the current working directory is used as project path by default.
1507
Especially for larger projects it is NOT wise to rely on the default project
1508
path, as weaving take a lot of time.
1509
See the AspectC++ Compiler Manual for a more detailed description of this
1513
\begin_layout Subsubsection
1519
\begin_layout Standard
1528
, this options effects the creation of object files of one or more source
1532
\begin_layout Subsubsection
1535
-v|--verbose [<arg>]
1538
\begin_layout Standard
1539
Set the level of verbosity.
1543
\begin_layout Subsubsection
1546
--aspect-header <arg>
1549
\begin_layout Standard
1550
This option differs from meaning in
1554
only if dependencies are generated ( see
1555
\begin_inset LatexCommand \ref{sub:Generating-dependency-information}
1562
\begin_layout Subsubsection
1568
\begin_layout Standard
1569
Don't remove intermediate
1576
\begin_layout Subsubsection
1582
\begin_layout Standard
1583
Specify path to GNU C++ compiler\i \.{ }
1589
\begin_layout Subsubsection
1595
\begin_layout Standard
1596
Specify path to AspectC++ compiler\i \.{ }
1597
By default ag++ assumes, that the ac++
1598
executable is located in the same directory like itself.
1601
\begin_layout Subsubsection
1607
\begin_layout Standard
1608
Specify the command which prints information about the compiler.
1609
This information is necessary for generating the parser (puma) configuration
1611
The default value is
1612
\begin_inset Quotes erd
1617
<compiler> <compiler options> -E -dM -v -x c++ <an empty file>
1618
\begin_inset Quotes erd
1624
\begin_layout Subsubsection
1630
\begin_layout Standard
1631
Path to a puma configuration file.
1632
If this option is available the configuration file will not be generated
1636
\begin_layout Subsubsection
1639
\begin_inset LatexCommand \label{sub:--Xcompiler}
1646
\begin_layout Standard
1655
options that might interfere with
1659
options are not recognized after using
1663
in the argument list of an
1671
\begin_layout Subsubsection
1674
\begin_inset LatexCommand \label{sub:--Xweaver}
1681
\begin_layout Standard
1682
Enable the recognition of those
1690
options which previously have been disabled by the usage of --
1695
\begin_layout Subsection
1696
\begin_inset LatexCommand \label{sub:Generating-dependency-information}
1700
Generating dependency information
1703
\begin_layout Standard
1704
To produce dependency files just pass the
1712
(consult the GNU C++ Compiler Manual) to
1717
Dependency files generated by
1721
are slighty different from dependency files created by
1725
, as they contain dependencies to aspect header files.
1730
option is provided, only the header file specified as option argument is
1731
considered when building the dependency file; otherwise the dependency
1732
file will contain all aspect header files within the whole project path
1737
\begin_layout Subsection
1741
\begin_layout Itemize
1748
Displays all options with a short description.
1751
\begin_layout Itemize
1754
ag++ -o test Test.cc main.cc
1758
Weave, compile and link the source files
1767
The created executable will be named '
1774
\begin_layout Itemize
1781
Create a puma configuration file named
1785
within the current working directory.
1789
\begin_layout Itemize
1792
ag++ --gen_config -o my.config
1796
Create a puma configuration file named
1801
\begin_layout Itemize
1804
ag++ --path src --include_files --dest gen/includes
1808
Generate modified include files out of all include files found below
1812
directory and store them under '
1819
\begin_layout Itemize
1822
ag++ -M -MFmain.dep main.cc
1826
Generate dependency file
1837
\begin_layout Itemize
1840
ag++ -p ../aspects -p .
1845
This string could be used to substitute