bake-toolkit 2.20.4 → 2.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile.rb +3 -3
- data/bin/bake +46 -46
- data/bin/bake-doc +11 -11
- data/bin/bakery +179 -179
- data/bin/createVSProjects +213 -213
- data/documentation/_build/html/_sources/changelog.txt +456 -451
- data/documentation/_build/html/_sources/commandline/commandline.txt +107 -107
- data/documentation/_build/html/_sources/concepts/build_hierarchy.txt +34 -34
- data/documentation/_build/html/_sources/concepts/concepts.txt +14 -14
- data/documentation/_build/html/_sources/concepts/inject.txt +65 -65
- data/documentation/_build/html/_sources/concepts/link_order.txt +91 -91
- data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -56
- data/documentation/_build/html/_sources/concepts/the_main_project.txt +45 -45
- data/documentation/_build/html/_sources/concepts/the_project_meta_file.txt +72 -72
- data/documentation/_build/html/_sources/ide/eclipse/eclipse.txt +25 -25
- data/documentation/_build/html/_sources/ide/eclipse/how_to_convert_existing_cdt_workspace.txt +31 -31
- data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_new_project_in_eclipse.txt +18 -18
- data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_workspace_in_eclipse.txt +27 -27
- data/documentation/_build/html/_sources/ide/eclipse/how_to_debug_in_eclipse.txt +38 -38
- data/documentation/_build/html/_sources/ide/eclipse/how_to_install_eclipse_plugin.txt +44 -44
- data/documentation/_build/html/_sources/ide/eclipse/how_to_use_bake_in_eclipse.txt +86 -86
- data/documentation/_build/html/_sources/ide/ide_integrations.txt +8 -8
- data/documentation/_build/html/_sources/ide/vs/how_to_create_vs_projects.txt +15 -15
- data/documentation/_build/html/_sources/ide/vs/how_to_debug_in_vs.txt +35 -35
- data/documentation/_build/html/_sources/ide/vs/how_to_used_bake_in_vs.txt +35 -35
- data/documentation/_build/html/_sources/ide/vs/vs.txt +10 -10
- data/documentation/_build/html/_sources/ide/vs/vs_install.txt +43 -43
- data/documentation/_build/html/_sources/index.txt +33 -33
- data/documentation/_build/html/_sources/install/install_bake.txt +112 -112
- data/documentation/_build/html/_sources/internal.txt +50 -50
- data/documentation/_build/html/_sources/known_issues.txt +9 -9
- data/documentation/_build/html/_sources/license.txt +4 -4
- data/documentation/_build/html/_sources/performance/performance.txt +104 -104
- data/documentation/_build/html/_sources/quickstart/quickstart.txt +70 -70
- data/documentation/_build/html/_sources/syntax/adapt_configs.txt +143 -143
- data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -43
- data/documentation/_build/html/_sources/syntax/derive_configs.txt +93 -94
- data/documentation/_build/html/_sources/syntax/project_meta_syntax.txt +19 -19
- data/documentation/_build/html/_sources/syntax/syntax.txt +11 -11
- data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +147 -147
- data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -34
- data/documentation/_build/html/_sources/tips_and_tricks/how_to_use_bake_with_cygwin.txt +62 -62
- data/documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt +122 -122
- data/documentation/_build/html/_sources/tips_and_tricks/the_bakery.txt +72 -72
- data/documentation/_build/html/_sources/tips_and_tricks/the_clang.txt +43 -43
- data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +34 -34
- data/documentation/_build/html/_sources/why_bake/why_bake.txt +40 -40
- data/documentation/_build/html/changelog.html +7 -0
- data/documentation/_build/html/commandline/commandline.html +2 -2
- data/documentation/_build/html/concepts/link_order.html +2 -2
- data/documentation/_build/html/concepts/prebuild.html +2 -2
- data/documentation/_build/html/index.html +4 -4
- data/documentation/_build/html/performance/performance.html +2 -2
- data/documentation/_build/html/searchindex.js +1 -1
- data/documentation/_build/html/syntax/adapt_configs.html +2 -2
- data/documentation/_build/html/syntax/syntax.html +2 -2
- data/documentation/_build/html/tips_and_tricks/the_clang.html +2 -2
- data/documentation/_build/html/why_bake/why_bake.html +2 -2
- data/lib/adapt/config/loader.rb +112 -112
- data/lib/bake/bundle.rb +158 -158
- data/lib/bake/cache.rb +179 -180
- data/lib/bake/config/checks.rb +68 -68
- data/lib/bake/config/loader.rb +363 -363
- data/lib/bake/libElement.rb +176 -176
- data/lib/bake/mergeConfig.rb +208 -208
- data/lib/bake/model/language.rb +45 -45
- data/lib/bake/model/loader.rb +99 -99
- data/lib/bake/model/metamodel.rb +307 -307
- data/lib/bake/model/metamodel_ext.rb +27 -27
- data/lib/bake/options/create.rb +95 -95
- data/lib/bake/options/options.rb +315 -310
- data/lib/bake/options/showDoc.rb +20 -20
- data/lib/bake/options/showLicense.rb +9 -9
- data/lib/bake/options/showToolchains.rb +38 -38
- data/lib/bake/options/usage.rb +79 -68
- data/lib/bake/subst.rb +313 -313
- data/lib/bake/toolchain/clang.rb +44 -44
- data/lib/bake/toolchain/clang_analyze.rb +31 -31
- data/lib/bake/toolchain/colorizing_formatter.rb +125 -125
- data/lib/bake/toolchain/diab.rb +53 -53
- data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +40 -40
- data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +41 -41
- data/lib/bake/toolchain/errorparser/error_parser.rb +71 -71
- data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +35 -35
- data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +35 -35
- data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +32 -32
- data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +44 -44
- data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +40 -40
- data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +30 -30
- data/lib/bake/toolchain/errorparser/lint_error_parser.rb +34 -34
- data/lib/bake/toolchain/errorparser/msvc_compiler_error_parser.rb +63 -63
- data/lib/bake/toolchain/errorparser/msvc_linker_error_parser.rb +42 -42
- data/lib/bake/toolchain/errorparser/process_output.rb +2 -2
- data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +30 -30
- data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +30 -30
- data/lib/bake/toolchain/gcc.rb +49 -49
- data/lib/bake/toolchain/gcc_env.rb +55 -55
- data/lib/bake/toolchain/greenhills.rb +52 -52
- data/lib/bake/toolchain/keil.rb +53 -53
- data/lib/bake/toolchain/lint.rb +20 -20
- data/lib/bake/toolchain/msvc.rb +58 -58
- data/lib/bake/toolchain/provider.rb +146 -146
- data/lib/bake/toolchain/ti.rb +47 -47
- data/lib/bake/util.rb +149 -149
- data/lib/bakery/buildPattern.rb +24 -24
- data/lib/bakery/model/language.rb +22 -22
- data/lib/bakery/model/loader.rb +55 -55
- data/lib/bakery/model/metamodel.rb +48 -48
- data/lib/bakery/options/options.rb +87 -87
- data/lib/bakery/toBake.rb +81 -81
- data/lib/blocks/block.rb +324 -324
- data/lib/blocks/blockBase.rb +204 -204
- data/lib/blocks/commandLine.rb +38 -38
- data/lib/blocks/compile.rb +529 -528
- data/lib/blocks/convert.rb +41 -41
- data/lib/blocks/docu.rb +30 -30
- data/lib/blocks/executable.rb +174 -174
- data/lib/blocks/has_execute_command.rb +31 -31
- data/lib/blocks/library.rb +114 -114
- data/lib/blocks/lint.rb +56 -56
- data/lib/blocks/makefile.rb +100 -100
- data/lib/blocks/showIncludes.rb +140 -125
- data/lib/common/abortException.rb +4 -4
- data/lib/common/cleanup.rb +10 -10
- data/lib/common/exit_helper.rb +38 -38
- data/lib/common/ext/file.rb +88 -88
- data/lib/common/ext/rtext.rb +11 -11
- data/lib/common/ext/stdout.rb +45 -45
- data/lib/common/ide_interface.rb +194 -194
- data/lib/common/options/parser.rb +95 -85
- data/lib/common/process.rb +64 -64
- data/lib/common/utils.rb +52 -52
- data/lib/common/version.rb +31 -23
- data/lib/multithread/job.rb +44 -44
- data/lib/tocxx.rb +558 -555
- data/lib/vs/options.rb +69 -69
- data/license.txt +90 -90
- metadata +2 -2
@@ -1,107 +1,107 @@
|
|
1
|
-
Commandline
|
2
|
-
===========
|
3
|
-
|
4
|
-
How to get help
|
5
|
-
***************
|
6
|
-
|
7
|
-
.. code-block:: console
|
8
|
-
|
9
|
-
User@Host:~$ bake -h
|
10
|
-
|
11
|
-
The most important options
|
12
|
-
**************************
|
13
|
-
|
14
|
-
#. *-b* the build configuration name
|
15
|
-
|
16
|
-
#. *-m* the main project directory (default is current directory)
|
17
|
-
|
18
|
-
#. *-p* the project to build (if not specified, the main project will be built with all dependencies)
|
19
|
-
|
20
|
-
.. note::
|
21
|
-
|
22
|
-
All configs of the project will be built, which is usually just one config, but if you have more than one config of the project in the workspace, use a comma separator.
|
23
|
-
|
24
|
-
Examples
|
25
|
-
********
|
26
|
-
|
27
|
-
Building an application
|
28
|
-
-----------------------
|
29
|
-
|
30
|
-
.. code-block:: console
|
31
|
-
|
32
|
-
User@Host:~$ bake -b Debug
|
33
|
-
|
34
|
-
.. note::
|
35
|
-
|
36
|
-
It is possible to omit *-b*:
|
37
|
-
|
38
|
-
.. code-block:: console
|
39
|
-
|
40
|
-
User@Host:~$ bake Debug
|
41
|
-
|
42
|
-
Building from within an arbitrary directory
|
43
|
-
-------------------------------------------
|
44
|
-
|
45
|
-
.. code-block:: console
|
46
|
-
|
47
|
-
User@Host:~$ bake Debug -m w:/root/mainProj
|
48
|
-
|
49
|
-
Building just one specific project
|
50
|
-
-----------------------------------
|
51
|
-
Assuming the project name to build s myProj.
|
52
|
-
|
53
|
-
.. code-block:: console
|
54
|
-
|
55
|
-
User@Host:~$ bake Debug -m w:/root1/myProj -p myProj
|
56
|
-
|
57
|
-
Building specific projects with differnt roots
|
58
|
-
----------------------------------------------
|
59
|
-
Assuming mainProj has several configs really included in the build (which is uncommon), you can choose one of the configs.
|
60
|
-
|
61
|
-
|
62
|
-
.. code-block:: console
|
63
|
-
|
64
|
-
User@Host:~$ bake Debug -m w:/root1/myProj -p myProj,abc
|
65
|
-
|
66
|
-
|
67
|
-
Building a project which has more than one root
|
68
|
-
-----------------------------------------------
|
69
|
-
Assuming code has been checked out into two roots, the console supports ansi colors, you want to stop on first error and build only the project bspAbc.
|
70
|
-
|
71
|
-
.. code-block:: console
|
72
|
-
|
73
|
-
User@Host:~$ bake Debug -m w:/root1/myProj -w w:/root1 -w w:/root2 -r -a black -p bspAbc
|
74
|
-
|
75
|
-
|
76
|
-
Clean a project(s)
|
77
|
-
------------------
|
78
|
-
|
79
|
-
.. code-block:: console
|
80
|
-
|
81
|
-
User@Host:~$ bake Debug -m w:/root1/myProj -w w:/root1 -w w:/root2 -r -a black -p bspAbc -c
|
82
|
-
|
83
|
-
Build a single file(s)
|
84
|
-
----------------------
|
85
|
-
.. code-block:: console
|
86
|
-
|
87
|
-
User@Host:~$ bake Debug -p bspAbc -f main.cpp
|
88
|
-
User@Host:~$ bake Debug -f .asm
|
89
|
-
|
90
|
-
.. note::
|
91
|
-
|
92
|
-
All files matching the pattern will be compiled (no wildcards allowed)
|
93
|
-
|
94
|
-
|
95
|
-
roots.bake
|
96
|
-
**********
|
97
|
-
|
98
|
-
Workspace roots can be defined in a file called "roots.bake", which will be searched from main project directory to root folder.
|
99
|
-
Example:
|
100
|
-
|
101
|
-
.. code-block:: console
|
102
|
-
|
103
|
-
../..
|
104
|
-
C:/another/root # comments written like this
|
105
|
-
something/else
|
106
|
-
|
107
|
-
If -w and roots.bake are not specified, the default workspace root is the parent directory of the main project.
|
1
|
+
Commandline
|
2
|
+
===========
|
3
|
+
|
4
|
+
How to get help
|
5
|
+
***************
|
6
|
+
|
7
|
+
.. code-block:: console
|
8
|
+
|
9
|
+
User@Host:~$ bake -h
|
10
|
+
|
11
|
+
The most important options
|
12
|
+
**************************
|
13
|
+
|
14
|
+
#. *-b* the build configuration name
|
15
|
+
|
16
|
+
#. *-m* the main project directory (default is current directory)
|
17
|
+
|
18
|
+
#. *-p* the project to build (if not specified, the main project will be built with all dependencies)
|
19
|
+
|
20
|
+
.. note::
|
21
|
+
|
22
|
+
All configs of the project will be built, which is usually just one config, but if you have more than one config of the project in the workspace, use a comma separator.
|
23
|
+
|
24
|
+
Examples
|
25
|
+
********
|
26
|
+
|
27
|
+
Building an application
|
28
|
+
-----------------------
|
29
|
+
|
30
|
+
.. code-block:: console
|
31
|
+
|
32
|
+
User@Host:~$ bake -b Debug
|
33
|
+
|
34
|
+
.. note::
|
35
|
+
|
36
|
+
It is possible to omit *-b*:
|
37
|
+
|
38
|
+
.. code-block:: console
|
39
|
+
|
40
|
+
User@Host:~$ bake Debug
|
41
|
+
|
42
|
+
Building from within an arbitrary directory
|
43
|
+
-------------------------------------------
|
44
|
+
|
45
|
+
.. code-block:: console
|
46
|
+
|
47
|
+
User@Host:~$ bake Debug -m w:/root/mainProj
|
48
|
+
|
49
|
+
Building just one specific project
|
50
|
+
-----------------------------------
|
51
|
+
Assuming the project name to build s myProj.
|
52
|
+
|
53
|
+
.. code-block:: console
|
54
|
+
|
55
|
+
User@Host:~$ bake Debug -m w:/root1/myProj -p myProj
|
56
|
+
|
57
|
+
Building specific projects with differnt roots
|
58
|
+
----------------------------------------------
|
59
|
+
Assuming mainProj has several configs really included in the build (which is uncommon), you can choose one of the configs.
|
60
|
+
|
61
|
+
|
62
|
+
.. code-block:: console
|
63
|
+
|
64
|
+
User@Host:~$ bake Debug -m w:/root1/myProj -p myProj,abc
|
65
|
+
|
66
|
+
|
67
|
+
Building a project which has more than one root
|
68
|
+
-----------------------------------------------
|
69
|
+
Assuming code has been checked out into two roots, the console supports ansi colors, you want to stop on first error and build only the project bspAbc.
|
70
|
+
|
71
|
+
.. code-block:: console
|
72
|
+
|
73
|
+
User@Host:~$ bake Debug -m w:/root1/myProj -w w:/root1 -w w:/root2 -r -a black -p bspAbc
|
74
|
+
|
75
|
+
|
76
|
+
Clean a project(s)
|
77
|
+
------------------
|
78
|
+
|
79
|
+
.. code-block:: console
|
80
|
+
|
81
|
+
User@Host:~$ bake Debug -m w:/root1/myProj -w w:/root1 -w w:/root2 -r -a black -p bspAbc -c
|
82
|
+
|
83
|
+
Build a single file(s)
|
84
|
+
----------------------
|
85
|
+
.. code-block:: console
|
86
|
+
|
87
|
+
User@Host:~$ bake Debug -p bspAbc -f main.cpp
|
88
|
+
User@Host:~$ bake Debug -f .asm
|
89
|
+
|
90
|
+
.. note::
|
91
|
+
|
92
|
+
All files matching the pattern will be compiled (no wildcards allowed)
|
93
|
+
|
94
|
+
|
95
|
+
roots.bake
|
96
|
+
**********
|
97
|
+
|
98
|
+
Workspace roots can be defined in a file called "roots.bake", which will be searched from main project directory to root folder.
|
99
|
+
Example:
|
100
|
+
|
101
|
+
.. code-block:: console
|
102
|
+
|
103
|
+
../..
|
104
|
+
C:/another/root # comments written like this
|
105
|
+
something/else
|
106
|
+
|
107
|
+
If -w and roots.bake are not specified, the default workspace root is the parent directory of the main project.
|
@@ -1,34 +1,34 @@
|
|
1
|
-
The build hierarchy
|
2
|
-
===================
|
3
|
-
|
4
|
-
Build graph
|
5
|
-
***********
|
6
|
-
|
7
|
-
Depending on the contents of the Project.meta files, a build graph will be generated:
|
8
|
-
* An ExecutableConfig usually specifies files to compile, dependencies to other projects and linker stuff.
|
9
|
-
* A LibraryConfig usually specifies files to compile and archive.
|
10
|
-
* A CustomConfig usually defines a custom step.
|
11
|
-
|
12
|
-
Every config type can be equipped with pre and post steps like shell commands or makefiles.
|
13
|
-
|
14
|
-
All these steps will be combined to a build graph.
|
15
|
-
|
16
|
-
Example
|
17
|
-
*******
|
18
|
-
|
19
|
-
The main project has dependencies to the projects A, B and C:
|
20
|
-
|
21
|
-
.. image:: ../_static/bake_build_hierachy.png
|
22
|
-
:width: 100 %
|
23
|
-
:scale: 75 %
|
24
|
-
|
25
|
-
Steps are executed bottom-up. If one step fails, all steps above won't be executed.
|
26
|
-
|
27
|
-
If e.g.
|
28
|
-
* PreStepMain 2 fails
|
29
|
-
* at least one file of library B does not compile
|
30
|
-
then
|
31
|
-
* library B will not be created
|
32
|
-
* files of the main project will not be compiled
|
33
|
-
* main project will not be linked
|
34
|
-
* post step of main project will not be executed
|
1
|
+
The build hierarchy
|
2
|
+
===================
|
3
|
+
|
4
|
+
Build graph
|
5
|
+
***********
|
6
|
+
|
7
|
+
Depending on the contents of the Project.meta files, a build graph will be generated:
|
8
|
+
* An ExecutableConfig usually specifies files to compile, dependencies to other projects and linker stuff.
|
9
|
+
* A LibraryConfig usually specifies files to compile and archive.
|
10
|
+
* A CustomConfig usually defines a custom step.
|
11
|
+
|
12
|
+
Every config type can be equipped with pre and post steps like shell commands or makefiles.
|
13
|
+
|
14
|
+
All these steps will be combined to a build graph.
|
15
|
+
|
16
|
+
Example
|
17
|
+
*******
|
18
|
+
|
19
|
+
The main project has dependencies to the projects A, B and C:
|
20
|
+
|
21
|
+
.. image:: ../_static/bake_build_hierachy.png
|
22
|
+
:width: 100 %
|
23
|
+
:scale: 75 %
|
24
|
+
|
25
|
+
Steps are executed bottom-up. If one step fails, all steps above won't be executed.
|
26
|
+
|
27
|
+
If e.g.
|
28
|
+
* PreStepMain 2 fails
|
29
|
+
* at least one file of library B does not compile
|
30
|
+
then
|
31
|
+
* library B will not be created
|
32
|
+
* files of the main project will not be compiled
|
33
|
+
* main project will not be linked
|
34
|
+
* post step of main project will not be executed
|
@@ -1,14 +1,14 @@
|
|
1
|
-
Concepts
|
2
|
-
==========
|
3
|
-
|
4
|
-
.. toctree::
|
5
|
-
:maxdepth: 2
|
6
|
-
|
7
|
-
|
8
|
-
the_project_meta_file
|
9
|
-
the_main_project
|
10
|
-
build_hierarchy
|
11
|
-
link_order
|
12
|
-
prebuild
|
13
|
-
inject
|
14
|
-
|
1
|
+
Concepts
|
2
|
+
==========
|
3
|
+
|
4
|
+
.. toctree::
|
5
|
+
:maxdepth: 2
|
6
|
+
|
7
|
+
|
8
|
+
the_project_meta_file
|
9
|
+
the_main_project
|
10
|
+
build_hierarchy
|
11
|
+
link_order
|
12
|
+
prebuild
|
13
|
+
inject
|
14
|
+
|
@@ -1,65 +1,65 @@
|
|
1
|
-
Injection and inheritance of IncludeDir and Dependency
|
2
|
-
******************************************************
|
3
|
-
|
4
|
-
It is possible to inject and inherit "includes" and inject "dependencies".
|
5
|
-
|
6
|
-
Inherit IncludeDir
|
7
|
-
==================
|
8
|
-
|
9
|
-
.. code-block:: console
|
10
|
-
|
11
|
-
IncludeDir include, inherit: true
|
12
|
-
|
13
|
-
This is typically used to make include directories available to upper levels, e.g.:
|
14
|
-
|
15
|
-
|
16
|
-
.. code-block:: console
|
17
|
-
|
18
|
-
# in MyLib/Project.meta
|
19
|
-
LibraryConfig Lib {
|
20
|
-
...
|
21
|
-
IncludeDir include, inherit: true
|
22
|
-
}
|
23
|
-
|
24
|
-
# in main/Project.meta
|
25
|
-
ExecutableConfig Debug {
|
26
|
-
...
|
27
|
-
Dependency MyLib, config: Lib
|
28
|
-
# IncludeDir "MyLib/include" - not needed because this IncludeDir is inherited
|
29
|
-
}
|
30
|
-
|
31
|
-
Inject IncludeDir
|
32
|
-
=================
|
33
|
-
|
34
|
-
.. code-block:: console
|
35
|
-
|
36
|
-
IncludeDir "mock/include", inject: front
|
37
|
-
|
38
|
-
"front" is used for mocking IncludeDirs, e.g. if a library shall include a mocked class instead of the original one in UnitTest context.
|
39
|
-
|
40
|
-
.. code-block:: console
|
41
|
-
|
42
|
-
IncludeDir include, inject: back
|
43
|
-
|
44
|
-
"back" is used if the lower levels do not know by themselves what to include. So this has to be configured from the outside, typically in the main project.
|
45
|
-
|
46
|
-
Inject Dependency
|
47
|
-
=================
|
48
|
-
|
49
|
-
.. code-block:: console
|
50
|
-
|
51
|
-
Dependency MyLib, inject: front # or back
|
52
|
-
|
53
|
-
This is used if a component cannot have this dependency hard coded, because it shall not know the concrete implementation or the dependency is only used for unittesting.
|
54
|
-
|
55
|
-
Example:
|
56
|
-
|
57
|
-
.. code-block:: console
|
58
|
-
|
59
|
-
ExecutableConfig UnitTest {
|
60
|
-
...
|
61
|
-
Dependency config: Lib
|
62
|
-
Dependency googleTest, inject: front
|
63
|
-
}
|
64
|
-
|
65
|
-
In this example the config Lib depends on googleTest. If googleTest inherits an IncludeDir, this would be known by Lib.
|
1
|
+
Injection and inheritance of IncludeDir and Dependency
|
2
|
+
******************************************************
|
3
|
+
|
4
|
+
It is possible to inject and inherit "includes" and inject "dependencies".
|
5
|
+
|
6
|
+
Inherit IncludeDir
|
7
|
+
==================
|
8
|
+
|
9
|
+
.. code-block:: console
|
10
|
+
|
11
|
+
IncludeDir include, inherit: true
|
12
|
+
|
13
|
+
This is typically used to make include directories available to upper levels, e.g.:
|
14
|
+
|
15
|
+
|
16
|
+
.. code-block:: console
|
17
|
+
|
18
|
+
# in MyLib/Project.meta
|
19
|
+
LibraryConfig Lib {
|
20
|
+
...
|
21
|
+
IncludeDir include, inherit: true
|
22
|
+
}
|
23
|
+
|
24
|
+
# in main/Project.meta
|
25
|
+
ExecutableConfig Debug {
|
26
|
+
...
|
27
|
+
Dependency MyLib, config: Lib
|
28
|
+
# IncludeDir "MyLib/include" - not needed because this IncludeDir is inherited
|
29
|
+
}
|
30
|
+
|
31
|
+
Inject IncludeDir
|
32
|
+
=================
|
33
|
+
|
34
|
+
.. code-block:: console
|
35
|
+
|
36
|
+
IncludeDir "mock/include", inject: front
|
37
|
+
|
38
|
+
"front" is used for mocking IncludeDirs, e.g. if a library shall include a mocked class instead of the original one in UnitTest context.
|
39
|
+
|
40
|
+
.. code-block:: console
|
41
|
+
|
42
|
+
IncludeDir include, inject: back
|
43
|
+
|
44
|
+
"back" is used if the lower levels do not know by themselves what to include. So this has to be configured from the outside, typically in the main project.
|
45
|
+
|
46
|
+
Inject Dependency
|
47
|
+
=================
|
48
|
+
|
49
|
+
.. code-block:: console
|
50
|
+
|
51
|
+
Dependency MyLib, inject: front # or back
|
52
|
+
|
53
|
+
This is used if a component cannot have this dependency hard coded, because it shall not know the concrete implementation or the dependency is only used for unittesting.
|
54
|
+
|
55
|
+
Example:
|
56
|
+
|
57
|
+
.. code-block:: console
|
58
|
+
|
59
|
+
ExecutableConfig UnitTest {
|
60
|
+
...
|
61
|
+
Dependency config: Lib
|
62
|
+
Dependency googleTest, inject: front
|
63
|
+
}
|
64
|
+
|
65
|
+
In this example the config Lib depends on googleTest. If googleTest inherits an IncludeDir, this would be known by Lib.
|
@@ -1,91 +1,91 @@
|
|
1
|
-
The link order
|
2
|
-
==============
|
3
|
-
|
4
|
-
The link order depends on the order of library definitions and dependencies in the Project.meta files.
|
5
|
-
|
6
|
-
In general, if a library X depends on a library Y, the library X must be linked before Y.
|
7
|
-
|
8
|
-
Example:
|
9
|
-
********
|
10
|
-
|
11
|
-
.. code-block:: console
|
12
|
-
|
13
|
-
Project A:
|
14
|
-
|
15
|
-
Dependency B
|
16
|
-
Dependency C
|
17
|
-
|
18
|
-
.. code-block:: console
|
19
|
-
|
20
|
-
Project B:
|
21
|
-
|
22
|
-
Dependency D
|
23
|
-
|
24
|
-
.. code-block:: console
|
25
|
-
|
26
|
-
Project C:
|
27
|
-
|
28
|
-
Dependency D
|
29
|
-
|
30
|
-
.. code-block:: console
|
31
|
-
|
32
|
-
Project D:
|
33
|
-
|
34
|
-
The link order will be
|
35
|
-
|
36
|
-
- Objects of A
|
37
|
-
- B
|
38
|
-
- C
|
39
|
-
- D
|
40
|
-
|
41
|
-
Same example but with external libraries:
|
42
|
-
*****************************************
|
43
|
-
|
44
|
-
.. code-block:: console
|
45
|
-
|
46
|
-
Project A:
|
47
|
-
|
48
|
-
ExternalLibrary a1
|
49
|
-
Dependency B
|
50
|
-
ExternalLibrary a2
|
51
|
-
Dependency C
|
52
|
-
ExternalLibrary a3
|
53
|
-
|
54
|
-
.. code-block:: console
|
55
|
-
|
56
|
-
Project B:
|
57
|
-
|
58
|
-
ExternalLibrary b1
|
59
|
-
Dependency D
|
60
|
-
ExternalLibrary b2
|
61
|
-
|
62
|
-
.. code-block:: console
|
63
|
-
|
64
|
-
Project C:
|
65
|
-
|
66
|
-
ExternalLibrary c1
|
67
|
-
Dependency D
|
68
|
-
ExternalLibrary c2
|
69
|
-
|
70
|
-
.. code-block:: console
|
71
|
-
|
72
|
-
Project D:
|
73
|
-
|
74
|
-
ExternalLibrary d1
|
75
|
-
ExternalLibrary d2
|
76
|
-
|
77
|
-
The link order will be
|
78
|
-
|
79
|
-
- Objects of A
|
80
|
-
- a1
|
81
|
-
- B
|
82
|
-
- b1
|
83
|
-
- b2
|
84
|
-
- a2
|
85
|
-
- C
|
86
|
-
- c1
|
87
|
-
- D
|
88
|
-
- d1
|
89
|
-
- d2
|
90
|
-
- c2
|
91
|
-
- a3
|
1
|
+
The link order
|
2
|
+
==============
|
3
|
+
|
4
|
+
The link order depends on the order of library definitions and dependencies in the Project.meta files.
|
5
|
+
|
6
|
+
In general, if a library X depends on a library Y, the library X must be linked before Y.
|
7
|
+
|
8
|
+
Example:
|
9
|
+
********
|
10
|
+
|
11
|
+
.. code-block:: console
|
12
|
+
|
13
|
+
Project A:
|
14
|
+
|
15
|
+
Dependency B
|
16
|
+
Dependency C
|
17
|
+
|
18
|
+
.. code-block:: console
|
19
|
+
|
20
|
+
Project B:
|
21
|
+
|
22
|
+
Dependency D
|
23
|
+
|
24
|
+
.. code-block:: console
|
25
|
+
|
26
|
+
Project C:
|
27
|
+
|
28
|
+
Dependency D
|
29
|
+
|
30
|
+
.. code-block:: console
|
31
|
+
|
32
|
+
Project D:
|
33
|
+
|
34
|
+
The link order will be
|
35
|
+
|
36
|
+
- Objects of A
|
37
|
+
- B
|
38
|
+
- C
|
39
|
+
- D
|
40
|
+
|
41
|
+
Same example but with external libraries:
|
42
|
+
*****************************************
|
43
|
+
|
44
|
+
.. code-block:: console
|
45
|
+
|
46
|
+
Project A:
|
47
|
+
|
48
|
+
ExternalLibrary a1
|
49
|
+
Dependency B
|
50
|
+
ExternalLibrary a2
|
51
|
+
Dependency C
|
52
|
+
ExternalLibrary a3
|
53
|
+
|
54
|
+
.. code-block:: console
|
55
|
+
|
56
|
+
Project B:
|
57
|
+
|
58
|
+
ExternalLibrary b1
|
59
|
+
Dependency D
|
60
|
+
ExternalLibrary b2
|
61
|
+
|
62
|
+
.. code-block:: console
|
63
|
+
|
64
|
+
Project C:
|
65
|
+
|
66
|
+
ExternalLibrary c1
|
67
|
+
Dependency D
|
68
|
+
ExternalLibrary c2
|
69
|
+
|
70
|
+
.. code-block:: console
|
71
|
+
|
72
|
+
Project D:
|
73
|
+
|
74
|
+
ExternalLibrary d1
|
75
|
+
ExternalLibrary d2
|
76
|
+
|
77
|
+
The link order will be
|
78
|
+
|
79
|
+
- Objects of A
|
80
|
+
- a1
|
81
|
+
- B
|
82
|
+
- b1
|
83
|
+
- b2
|
84
|
+
- a2
|
85
|
+
- C
|
86
|
+
- c1
|
87
|
+
- D
|
88
|
+
- d1
|
89
|
+
- d2
|
90
|
+
- c2
|
91
|
+
- a3
|