Skip to content

Commit 9772c6b

Browse files
committed
Add draft for build systems
1 parent ab3c4be commit 9772c6b

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
## Module name: Build systems
2+
3+
_Skeleton descriptions are typeset in italic text,_
4+
_so please don't remove these descriptions when editing the topic._
5+
6+
### Overview
7+
8+
_Provides a short natural language abstract of the module’s contents._
9+
_Specifies the different levels of teaching._
10+
11+
------------------------------------------------------------------------
12+
Level Objective
13+
----------------- ------------------------------------------------------
14+
Foundational --- Knowledge about build systems
15+
16+
Main --- Usage of build system to compile a executable
17+
18+
Advanced --- Usage of build system to compile a library or
19+
add external libraries as a dependencies
20+
21+
------------------------------------------------------------------------
22+
23+
### Motivation
24+
25+
_Why is this important?_
26+
_Why do we want to learn/teach this topic?_
27+
28+
* Building complex C++ projects by hand or writing Make files is tricky
29+
* Build systems can help to resolve dependencies
30+
* Build systems can help do distribute C++ code and help other to compile the code
31+
* Build systems can help to find and include libraries as dependencies
32+
* All major C++ projects are distributed with build systems
33+
34+
### Topic introduction
35+
36+
_Very brief introduction to the topic._
37+
38+
Build systems are used to configure, build, and install complex C++ projects.
39+
40+
41+
### Foundational: Knowledge about build systems
42+
43+
#### Background/Required Knowledge
44+
45+
A student:
46+
* Should know about build systems
47+
48+
49+
#### Student outcomes
50+
51+
_A list of things "a student should be able to" after the curriculum._
52+
_The next word should be an action word and testable in an exam._
53+
_Max 5 items._
54+
55+
A student should be able to:
56+
57+
1. To explain what a build system is
58+
2. Know that a build systems resolves dependencies
59+
3. Know that a build system support cross-platform compilation
60+
61+
#### Caveats
62+
63+
_This section mentions subtle points to understand, like anything resulting in
64+
implementation-defined, unspecified, or undefined behavior._
65+
66+
None
67+
68+
#### Points to cover
69+
70+
_This section lists important details for each point._
71+
72+
* Mention that many build systems are available for C++.
73+
* Mention benefits and challenges
74+
75+
### Main: Usage of build system to compile a executable
76+
77+
#### Background/Required Knowledge
78+
79+
* All of the above.
80+
81+
#### Student outcomes
82+
83+
A student should be able to:
84+
85+
1. Write a configuration file to compile a C++ program with a main method
86+
2. Use the build system to generate the executable
87+
88+
#### Caveats
89+
90+
The instructions are restricted to the chosen build system and
91+
not easily transferable.
92+
93+
94+
#### Points to cover
95+
96+
* Adding include paths to header files
97+
* Adding compiler flags
98+
* How to build Release and Debug builds
99+
100+
101+
### Advanced
102+
103+
_These are important topics that are not expected to be covered but provide
104+
guidance where one can continue to investigate this topic in more depth._
105+
106+
* How to build libraries
107+
* How to include libraries to the executable
108+
* How to find external libraries and include them
109+
* How to add support for different compilers
110+
* How to add support for different operating systems

0 commit comments

Comments
 (0)