bake-toolkit 2.20.4 → 2.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|