-
Notifications
You must be signed in to change notification settings - Fork 13
Add draft for build systems #93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
9772c6b
Add draft for build systems
diehlpk ac383ec
Update buildsystems.md
diehlpk ecbec3b
Typos
diehlpk 6465005
More typos
diehlpk f50e498
Update buildsystems.md
diehlpk 430c317
Update buildsystems.md
diehlpk ee55d0e
Update buildsystems.md
diehlpk cbbfbe2
make it more precise
diehlpk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
## Module name: Build systems | ||
|
||
_Skeleton descriptions are typeset in italic text,_ | ||
_so please don't remove these descriptions when editing the topic._ | ||
|
||
### Overview | ||
|
||
_Provides a short natural language abstract of the module’s contents._ | ||
_Specifies the different levels of teaching._ | ||
|
||
------------------------------------------------------------------------ | ||
Level Objective | ||
----------------- ------------------------------------------------------ | ||
Foundational --- Knowledge about build systems | ||
|
||
Main --- Usage of build system to compile a executable | ||
|
||
Advanced --- Add external libraries as a dependencies | ||
|
||
------------------------------------------------------------------------ | ||
|
||
### Motivation | ||
|
||
_Why is this important?_ | ||
_Why do we want to learn/teach this topic?_ | ||
|
||
* Building complex C++ projects by hand is tricky | ||
* Build systems can help to resolve dependencies | ||
* Build systems can help do distribute C++ code and help other to compile the code | ||
* Build systems can help to find and include libraries as dependencies | ||
* Build systems faciliate project management | ||
* All major C++ projects are distributed with build systems | ||
|
||
### Topic introduction | ||
|
||
_Very brief introduction to the topic._ | ||
|
||
Build systems are used to configure, build, and install complex C++ projects. | ||
|
||
|
||
### Foundational: Knowledge about build systems | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
#### Background/Required Knowledge | ||
|
||
A student: | ||
* Should know how to compile and link C++ programs | ||
|
||
|
||
#### Student outcomes | ||
|
||
_A list of things "a student should be able to" after the curriculum._ | ||
_The next word should be an action word and testable in an exam._ | ||
_Max 5 items._ | ||
|
||
A student should be able to: | ||
|
||
1. To explain what a build system is | ||
2. To explain that a build systems resolves dependencies | ||
3. To explain that a build system supports compilation for different operating systems and architectures | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
#### Caveats | ||
|
||
_This section mentions subtle points to understand, like anything resulting in | ||
implementation-defined, unspecified, or undefined behavior._ | ||
|
||
None | ||
|
||
#### Points to cover | ||
|
||
_This section lists important details for each point._ | ||
|
||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* Mention that many build systems are available for C++ | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* Mention benefits and challenges | ||
* Build system help to only compile the C++ files with code changes and not the complete project | ||
|
||
### Main: Usage of build system to compile a executable | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
#### Background/Required Knowledge | ||
|
||
* All of the above. | ||
|
||
#### Student outcomes | ||
|
||
A student should be able to: | ||
|
||
1. Download a C++ package and build the package | ||
2. Write a configuration file to compile a C++ executable | ||
3. Pass compiler options via the build system | ||
4. Use the build system to generate the executable | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
5. Write a configuration file to compile a library and link the library to a C++ executable | ||
|
||
#### Caveats | ||
|
||
The instructions are restricted to the chosen build system and | ||
vulder marked this conversation as resolved.
Show resolved
Hide resolved
|
||
not easily transferable. | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
|
||
#### Points to cover | ||
|
||
* Include paths to header files to the configuration | ||
* Adding compiler flags | ||
* How to build Release and Debug builds | ||
* Linking external libraries to the C++ project | ||
* Support compilation on different operating systems, compilers, and architectures | ||
|
||
|
||
### Advanced | ||
|
||
_These are important topics that are not expected to be covered but provide | ||
guidance where one can continue to investigate this topic in more depth._ | ||
|
||
* How to build libraries | ||
diehlpk marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* How to have external libraries be downloaded during the build process | ||
* Mention that build systems provide support for unit testing | ||
|
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.