This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
toolchain [2014/05/08 08:15] viennastar |
toolchain [2014/07/03 06:32] (current) viennastar [Version Control] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Toolchain ====== | ||
+ | |||
+ | |||
Source development requires a series of tool. Some important (at least important for our development) are listet here: | Source development requires a series of tool. Some important (at least important for our development) are listet here: | ||
==== Version Control ==== | ==== Version Control ==== | ||
- | It is of utmost importance to use some sort of tool which manages different versions of your files. These tools are [[https://en.wikipedia.org/wiki/Revision_control|called version control or revision control tools]]. We use [[https://en.wikipedia.org/wiki/Git_%28software%29|git]] and [[https://github.com/|github]] for our projects. | + | It is important to keep track of different versions of source code files during a software development process. Especially if multiple developer work on the same project, it is often required to view and review changes, undo possible errors, synchronize the source code file, ... Tools which take care of this are called [[https://en.wikipedia.org/wiki/Revision_control|version control or revision control tools]]. We use [[https://en.wikipedia.org/wiki/Git_%28software%29|git]] and [[https://github.com/|github]] for our projects. |
You will need to know how to do the following things with git: | You will need to know how to do the following things with git: | ||
Line 10: | Line 13: | ||
* Committing changes (git commit) | * Committing changes (git commit) | ||
* Checking the status of the reporistory (git status) | * Checking the status of the reporistory (git status) | ||
+ | * Pulling and pushing changes (git pull, git push) | ||
Tutorials and Links | Tutorials and Links | ||
- | * [[http://betterexplained.com/articles/a-visual-guide-to-version-control/|A Visual Guide to Version Control]] | + | * [[http://betterexplained.com/articles/a-visual-guide-to-version-control/|A Visual Guide to Version Control]] (good overview, but ignore the SVN examples) |
- | * [[http://www.lynda.com/Version-Control-tutorials/Fundamentals-Software-Version-Control/106788-2.html|Fundamentals of Software Version Control]] | + | * [[https://try.github.io/levels/1/challenges/1| Got 15 minutes and want to learn Git? (Interactive tutorial)]] |
- | * [[https://www.atlassian.com/de/git/tutorial/git-basics|Git-Anleitungen]] | + | * [[http://www.lynda.com/ALMTFS-tutorials/Overview-software-version-control/106788/115974-4.html|Fundamentals of Software Version Control: Overview of software version control]] |
+ | * [[http://www.lynda.com/ALMTFS-tutorials/Understanding-version-control-concepts/106788/115975-4.html|Fundamentals of Software Version Control: Understanding version control concepts]] | ||
+ | * [[http://www.lynda.com/ALMTFS-tutorials/Demo-one-Getting-started/106788/115976-4.html|Fundamentals of Software Version Control: Demo one: Getting started]] | ||
+ | * [[http://www.lynda.com/ALMTFS-tutorials/Demo-two-Handling-oops/106788/115977-4.html|Fundamentals of Software Version Control: Demo two: Handling the :oops"]] | ||
* [[http://www.vogella.com/tutorials/Git/article.html|Git - Tutorial ]] | * [[http://www.vogella.com/tutorials/Git/article.html|Git - Tutorial ]] | ||
- | * [[https://try.github.io/levels/1/challenges/1| Got 15 minutes and want to learn Git? (Interactive tutorial]] | + | |
==== Development/IDE ==== | ==== Development/IDE ==== | ||
- | Source code can basicly be written in any text editor. We recommend simple text editors (like [[https://de.wikipedia.org/wiki/Kate_%28KDE%29|kate]], [[https://de.wikipedia.org/wiki/Gedit|gedit]], [[https://en.wikipedia.org/wiki/Qt_Creator|QtCreator]], [[https://en.wikipedia.org/wiki/Code::Blocks|Code::Blocks]]) over highly complex (like [[https://en.wikipedia.org/wiki/Eclipse_%28software%29|Eclipse]]). | + | Source code can basically be written in any text editor. We recommend simple text editors (like [[https://de.wikipedia.org/wiki/Gedit|gedit]]). |
==== Compilation ==== | ==== Compilation ==== | ||
Line 37: | Line 44: | ||
To avoid compiling each source code file manually, build automation tools are used. [[https://en.wikipedia.org/wiki/Make_%28software%29|make]] is the most popular build automation tool in the Linux/Unix area. In addition to classic build automation tools, [[https://en.wikipedia.org/wiki/Cmake|cmake]] provides a higher level abstraction and can be used to create make files or configuration for other build automation tools (like [[https://en.wikipedia.org/wiki/Microsoft_Visual_Studio|Visual Studio]]). | To avoid compiling each source code file manually, build automation tools are used. [[https://en.wikipedia.org/wiki/Make_%28software%29|make]] is the most popular build automation tool in the Linux/Unix area. In addition to classic build automation tools, [[https://en.wikipedia.org/wiki/Cmake|cmake]] provides a higher level abstraction and can be used to create make files or configuration for other build automation tools (like [[https://en.wikipedia.org/wiki/Microsoft_Visual_Studio|Visual Studio]]). | ||
- | You will need to know how to do the following things with cmake: | + | You will need to know how to do the following things with make/cmake: |
- | * Creating a | + | * Running a make file |
+ | * Using a CMake config to generate a make file | ||
Tutorials and Links | Tutorials and Links | ||
- | * | + | * [[http://mirkokiefer.com/blog/2013/03/cmake-by-example/|CMake by Example]] |
+ | * [[http://mathnathan.com/2010/07/getting-started-with-cmake/|Getting Started with CMake]] | ||
+ | * [[http://www.elpauer.org/stuff/learning_cmake.pdf|Learning Cmake]] | ||
==== Debugging ==== | ==== Debugging ==== | ||
The [[https://en.wikipedia.org/wiki/Debugger|debugger]] is a tool which helps a software developer finding bugs in his code. For Linux environments, the [[https://en.wikipedia.org/wiki/Gdb|gdb]] can be used. | The [[https://en.wikipedia.org/wiki/Debugger|debugger]] is a tool which helps a software developer finding bugs in his code. For Linux environments, the [[https://en.wikipedia.org/wiki/Gdb|gdb]] can be used. | ||
+ | |||
+ | You will need to know how to do the following things with gcc: | ||
+ | * What is a segmentation fault? | ||
+ | * What is a backtrace? | ||
+ | * Running your program in gdb (run) | ||
+ | * Printing variables and values (print) | ||
+ | * Creating/setting/managing breakpoints (break) | ||
+ | * Flow control (continue, step, next) | ||
Tutorials and Links | Tutorials and Links | ||
+ | * [[http://www.cs.umd.edu/~srhuang/teaching/cmsc212/gdb-tutorial-handout.pdf|GDB Tutorial]] | ||
* [[http://cseweb.ucsd.edu/classes/fa09/cse141/tutorial_gcc_gdb.html|Tutorial of gcc and gdb]] | * [[http://cseweb.ucsd.edu/classes/fa09/cse141/tutorial_gcc_gdb.html|Tutorial of gcc and gdb]] | ||
+ | * [[http://www.cprogramming.com/gdb.html|A GDB Tutorial with Examples]] | ||