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.
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