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.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile.rb +3 -3
  3. data/bin/bake +46 -46
  4. data/bin/bake-doc +11 -11
  5. data/bin/bakery +179 -179
  6. data/bin/createVSProjects +213 -213
  7. data/documentation/_build/html/_sources/changelog.txt +456 -451
  8. data/documentation/_build/html/_sources/commandline/commandline.txt +107 -107
  9. data/documentation/_build/html/_sources/concepts/build_hierarchy.txt +34 -34
  10. data/documentation/_build/html/_sources/concepts/concepts.txt +14 -14
  11. data/documentation/_build/html/_sources/concepts/inject.txt +65 -65
  12. data/documentation/_build/html/_sources/concepts/link_order.txt +91 -91
  13. data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -56
  14. data/documentation/_build/html/_sources/concepts/the_main_project.txt +45 -45
  15. data/documentation/_build/html/_sources/concepts/the_project_meta_file.txt +72 -72
  16. data/documentation/_build/html/_sources/ide/eclipse/eclipse.txt +25 -25
  17. data/documentation/_build/html/_sources/ide/eclipse/how_to_convert_existing_cdt_workspace.txt +31 -31
  18. data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_new_project_in_eclipse.txt +18 -18
  19. data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_workspace_in_eclipse.txt +27 -27
  20. data/documentation/_build/html/_sources/ide/eclipse/how_to_debug_in_eclipse.txt +38 -38
  21. data/documentation/_build/html/_sources/ide/eclipse/how_to_install_eclipse_plugin.txt +44 -44
  22. data/documentation/_build/html/_sources/ide/eclipse/how_to_use_bake_in_eclipse.txt +86 -86
  23. data/documentation/_build/html/_sources/ide/ide_integrations.txt +8 -8
  24. data/documentation/_build/html/_sources/ide/vs/how_to_create_vs_projects.txt +15 -15
  25. data/documentation/_build/html/_sources/ide/vs/how_to_debug_in_vs.txt +35 -35
  26. data/documentation/_build/html/_sources/ide/vs/how_to_used_bake_in_vs.txt +35 -35
  27. data/documentation/_build/html/_sources/ide/vs/vs.txt +10 -10
  28. data/documentation/_build/html/_sources/ide/vs/vs_install.txt +43 -43
  29. data/documentation/_build/html/_sources/index.txt +33 -33
  30. data/documentation/_build/html/_sources/install/install_bake.txt +112 -112
  31. data/documentation/_build/html/_sources/internal.txt +50 -50
  32. data/documentation/_build/html/_sources/known_issues.txt +9 -9
  33. data/documentation/_build/html/_sources/license.txt +4 -4
  34. data/documentation/_build/html/_sources/performance/performance.txt +104 -104
  35. data/documentation/_build/html/_sources/quickstart/quickstart.txt +70 -70
  36. data/documentation/_build/html/_sources/syntax/adapt_configs.txt +143 -143
  37. data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -43
  38. data/documentation/_build/html/_sources/syntax/derive_configs.txt +93 -94
  39. data/documentation/_build/html/_sources/syntax/project_meta_syntax.txt +19 -19
  40. data/documentation/_build/html/_sources/syntax/syntax.txt +11 -11
  41. data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +147 -147
  42. data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -34
  43. data/documentation/_build/html/_sources/tips_and_tricks/how_to_use_bake_with_cygwin.txt +62 -62
  44. data/documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt +122 -122
  45. data/documentation/_build/html/_sources/tips_and_tricks/the_bakery.txt +72 -72
  46. data/documentation/_build/html/_sources/tips_and_tricks/the_clang.txt +43 -43
  47. data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +34 -34
  48. data/documentation/_build/html/_sources/why_bake/why_bake.txt +40 -40
  49. data/documentation/_build/html/changelog.html +7 -0
  50. data/documentation/_build/html/commandline/commandline.html +2 -2
  51. data/documentation/_build/html/concepts/link_order.html +2 -2
  52. data/documentation/_build/html/concepts/prebuild.html +2 -2
  53. data/documentation/_build/html/index.html +4 -4
  54. data/documentation/_build/html/performance/performance.html +2 -2
  55. data/documentation/_build/html/searchindex.js +1 -1
  56. data/documentation/_build/html/syntax/adapt_configs.html +2 -2
  57. data/documentation/_build/html/syntax/syntax.html +2 -2
  58. data/documentation/_build/html/tips_and_tricks/the_clang.html +2 -2
  59. data/documentation/_build/html/why_bake/why_bake.html +2 -2
  60. data/lib/adapt/config/loader.rb +112 -112
  61. data/lib/bake/bundle.rb +158 -158
  62. data/lib/bake/cache.rb +179 -180
  63. data/lib/bake/config/checks.rb +68 -68
  64. data/lib/bake/config/loader.rb +363 -363
  65. data/lib/bake/libElement.rb +176 -176
  66. data/lib/bake/mergeConfig.rb +208 -208
  67. data/lib/bake/model/language.rb +45 -45
  68. data/lib/bake/model/loader.rb +99 -99
  69. data/lib/bake/model/metamodel.rb +307 -307
  70. data/lib/bake/model/metamodel_ext.rb +27 -27
  71. data/lib/bake/options/create.rb +95 -95
  72. data/lib/bake/options/options.rb +315 -310
  73. data/lib/bake/options/showDoc.rb +20 -20
  74. data/lib/bake/options/showLicense.rb +9 -9
  75. data/lib/bake/options/showToolchains.rb +38 -38
  76. data/lib/bake/options/usage.rb +79 -68
  77. data/lib/bake/subst.rb +313 -313
  78. data/lib/bake/toolchain/clang.rb +44 -44
  79. data/lib/bake/toolchain/clang_analyze.rb +31 -31
  80. data/lib/bake/toolchain/colorizing_formatter.rb +125 -125
  81. data/lib/bake/toolchain/diab.rb +53 -53
  82. data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +40 -40
  83. data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +41 -41
  84. data/lib/bake/toolchain/errorparser/error_parser.rb +71 -71
  85. data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +35 -35
  86. data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +35 -35
  87. data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +32 -32
  88. data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +44 -44
  89. data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +40 -40
  90. data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +30 -30
  91. data/lib/bake/toolchain/errorparser/lint_error_parser.rb +34 -34
  92. data/lib/bake/toolchain/errorparser/msvc_compiler_error_parser.rb +63 -63
  93. data/lib/bake/toolchain/errorparser/msvc_linker_error_parser.rb +42 -42
  94. data/lib/bake/toolchain/errorparser/process_output.rb +2 -2
  95. data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +30 -30
  96. data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +30 -30
  97. data/lib/bake/toolchain/gcc.rb +49 -49
  98. data/lib/bake/toolchain/gcc_env.rb +55 -55
  99. data/lib/bake/toolchain/greenhills.rb +52 -52
  100. data/lib/bake/toolchain/keil.rb +53 -53
  101. data/lib/bake/toolchain/lint.rb +20 -20
  102. data/lib/bake/toolchain/msvc.rb +58 -58
  103. data/lib/bake/toolchain/provider.rb +146 -146
  104. data/lib/bake/toolchain/ti.rb +47 -47
  105. data/lib/bake/util.rb +149 -149
  106. data/lib/bakery/buildPattern.rb +24 -24
  107. data/lib/bakery/model/language.rb +22 -22
  108. data/lib/bakery/model/loader.rb +55 -55
  109. data/lib/bakery/model/metamodel.rb +48 -48
  110. data/lib/bakery/options/options.rb +87 -87
  111. data/lib/bakery/toBake.rb +81 -81
  112. data/lib/blocks/block.rb +324 -324
  113. data/lib/blocks/blockBase.rb +204 -204
  114. data/lib/blocks/commandLine.rb +38 -38
  115. data/lib/blocks/compile.rb +529 -528
  116. data/lib/blocks/convert.rb +41 -41
  117. data/lib/blocks/docu.rb +30 -30
  118. data/lib/blocks/executable.rb +174 -174
  119. data/lib/blocks/has_execute_command.rb +31 -31
  120. data/lib/blocks/library.rb +114 -114
  121. data/lib/blocks/lint.rb +56 -56
  122. data/lib/blocks/makefile.rb +100 -100
  123. data/lib/blocks/showIncludes.rb +140 -125
  124. data/lib/common/abortException.rb +4 -4
  125. data/lib/common/cleanup.rb +10 -10
  126. data/lib/common/exit_helper.rb +38 -38
  127. data/lib/common/ext/file.rb +88 -88
  128. data/lib/common/ext/rtext.rb +11 -11
  129. data/lib/common/ext/stdout.rb +45 -45
  130. data/lib/common/ide_interface.rb +194 -194
  131. data/lib/common/options/parser.rb +95 -85
  132. data/lib/common/process.rb +64 -64
  133. data/lib/common/utils.rb +52 -52
  134. data/lib/common/version.rb +31 -23
  135. data/lib/multithread/job.rb +44 -44
  136. data/lib/tocxx.rb +558 -555
  137. data/lib/vs/options.rb +69 -69
  138. data/license.txt +90 -90
  139. 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