Skip to content

Commit ea5bb4a

Browse files
diehlpkVictorEijkhoutDaniel Hanson
authored andcommitted
Adds initial draft for build systems (#93)
Co-authored-by: Victor Eijkhout <eijkhout@tacc.utexas.edu> Co-authored-by: Daniel Hanson <daniel@cppcon.org> Co-authored-by: Patrick Diehl <diehlpk@lanl.gov>
1 parent ab3c4be commit ea5bb4a

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
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 --- Add external libraries as a dependencies
19+
20+
------------------------------------------------------------------------
21+
22+
### Motivation
23+
24+
_Why is this important?_
25+
_Why do we want to learn/teach this topic?_
26+
27+
* Building complex C++ projects by hand is tricky
28+
* Build systems can help to resolve dependencies
29+
* Build systems can help do distribute C++ code and help other to compile the code
30+
* Build systems can help to find and include libraries as dependencies
31+
* Build systems faciliate project management
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 how to compile and link C++ programs
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. To explain that a build systems resolves dependencies
59+
3. To explain that a build system supports compilation for different operating systems and architectures
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+
* Build system help to only compile the C++ files with code changes and not the complete project
75+
76+
### Main: Usage of build system to compile a executable
77+
78+
#### Background/Required Knowledge
79+
80+
* All of the above.
81+
82+
#### Student outcomes
83+
84+
A student should be able to:
85+
86+
1. Download a C++ package and build the package
87+
2. Write a configuration file to compile a C++ executable
88+
3. Pass compiler options via the build system
89+
4. Use the build system to generate the executable
90+
5. Write a configuration file to compile a library and link the library to a C++ executable
91+
92+
#### Caveats
93+
94+
The instructions are restricted to the chosen build system and
95+
not easily transferable.
96+
97+
98+
#### Points to cover
99+
100+
* Include paths to header files to the configuration
101+
* Adding compiler flags
102+
* How to build Release and Debug builds
103+
* Linking external libraries to the C++ project
104+
* Support compilation on different operating systems, compilers, and architectures
105+
106+
107+
### Advanced
108+
109+
_These are important topics that are not expected to be covered but provide
110+
guidance where one can continue to investigate this topic in more depth._
111+
112+
* How to build libraries
113+
* How to have external libraries be downloaded during the build process
114+
* Mention that build systems provide support for unit testing
115+

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy