User Tools

Site Tools


toolchain

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
toolchain [2014/05/07 15:25]
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 processEspecially 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: 
 +  * Cloning a repository (git clone) 
 +  * Adding files to the repository (git add) 
 +  * Committing changes (git commit) 
 +  * Checking the status of the reporistory (git status) 
 +  * Pulling and pushing changes (git pull, git push) 
 + 
 +Tutorials and Links 
 +  * [[http://​betterexplained.com/​articles/​a-visual-guide-to-version-control/​|A Visual Guide to Version Control]] (good overview, but ignore the SVN examples) 
 +  * [[https://​try.github.io/​levels/​1/​challenges/​1| Got 15 minutes and want to learn Git? (Interactive tutorial)]] 
 +  * [[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 ]] 
  
 ==== 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]]) 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 ====
  
-Each source code file has to be compiled using a compiler (in our case a [[https://​en.wikipedia.org/​wiki/​List_of_compilers#​C.2B.2B_compilers|C++ compiler}). In the world of Linux, there are two main compilers: [[https://​en.wikipedia.org/​wiki/​GNU_Compiler_Collection|GCC]] and [[https://​en.wikipedia.org/​wiki/​Clang|Clang]].+Each source code file has to be compiled using a compiler (in our case a [[https://​en.wikipedia.org/​wiki/​List_of_compilers#​C.2B.2B_compilers|C++ compiler]]. In the world of Linux, there are two main compilers: [[https://​en.wikipedia.org/​wiki/​GNU_Compiler_Collection|GCC]] and [[https://​en.wikipedia.org/​wiki/​Clang|Clang]]. 
 + 
 +You will need to know how to do the following things with a compiler: 
 +  * Compile a single source code file 
 +  * Compile multiple source code files to object files 
 +  * Link multiple object files into an exectueable 
 + 
 +Tutorials and Links 
 +  * [[http://​pages.cs.wisc.edu/​~beechung/​ref/​gcc-intro.html|Compiling C and C++ Programs]] 
 +  * [[http://​www3.ntu.edu.sg/​home/​ehchua/​programming/​cpp/​gcc_make.html|GCC and Make]]
  
 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 make/cmake:
 +  * Running a make file
 +  * Using a CMake config to generate a make file
 +
 +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.
 +
 +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
 +  * [[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://​www.cprogramming.com/​gdb.html|A GDB Tutorial with Examples]]
  
toolchain.1399476310.txt.gz · Last modified: 2014/05/07 15:25 by viennastar