User Tools

Site Tools


developer_tools

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
developer_tools [2015/08/19 00:42]
be.ing
developer_tools [2019/06/15 07:11] (current)
ferranpujolcamins [Using IDEs]
Line 1: Line 1:
  
 ====== Graphical development tools ====== ====== Graphical development tools ======
 +It is recommended to use an Integrated Development Environment that works with C++. Mixxx is a large C++ project spread across many files. Without an IDE that can help navigate around code split across multiple files, it can be difficult to understand how the code fits together.
 +
 ===== Linux ===== ===== Linux =====
-  * IDEs: [[https://​www.kdevelop.org/​|KDevelop]],​ [[http://​eclipse.org/​|Eclipse]],​ [[http://​wiki.qt.io/​Category:​Tools::​QtCreator|Qt Creator]] +  * Integrated Development Environments (IDEs): [[https://​www.kdevelop.org/​|KDevelop]],​ [[http://​eclipse.org/​|Eclipse]],​ [[http://​wiki.qt.io/​Category:​Tools::​QtCreator|Qt Creator]] 
-  * [[http://​www.gnome.org/​projects/​gedit/​screenshots.html|gedit]] ​(Gnome) and [[http://​kate-editor.org/​|kate]] ​(KDE) are both decent editors. ​ ( Gedit has a nice dark colour scheme you can pick to use. ) +  * Text editors: ​[[http://​www.gnome.org/​projects/​gedit/​screenshots.html|gedit]][[http://​kate-editor.org/​|kate]][[http://​www.scintilla.org/​SciTE.html|SciTE]][[https://www.gnu.org/​software/​emacs/|emacs]] 
-  * [[http://​www.scintilla.org/​SciTE.html|SciTE]] ​light tabbed editor with nice coding features +  * Git tools: gitk (comes with git), [[http://git-cola.github.io/|git-cola]][[https://wiki.gnome.org/​Apps/​Gitg/|gitg]] 
-  * [[http://meld.sourceforge.net/|Meld]] and [[http://www.caffeinated.me.uk/​kompare/|Kompare]] are decent diff tools +
-  * [[http://kdesvn.alwins-world.de/trac.fcgi|KDESvn]] is what I used to use to sync with SVN in KDE.+
 ===== Windows ===== ===== Windows =====
-  * [[http://​notepad-plus.sourceforge.net/​|notepad++]] is quite a good GPL editor+  * Integrated Development Environments (IDEs): [[http://​eclipse.org/​|Eclipse]],​ [[http://​wiki.qt.io/​Category:​Tools::​QtCreator|Qt Creator]] 
-  * [[http://tortoisesvn.tigris.org/|Tortoise SVN]] is good for doing SVN checkouts and commits+  * Text editors: ​[[http://​notepad-plus.sourceforge.net/​|Notepad++]], [[https://​www.gnu.org/​software/​emacs/​|emacs]] 
-  * [[http://winmerge.org/|WinMerge]] is a decent GPL diff tool+  * Git tools: ​[[https://tortoisegit.org/|Tortise Git]], [[http://​gitextensions.github.io/​|Git Extensions]] 
-  * [[http://www.7-zip.org/|7-zip]] is a pretty handy archiver. ​+ 
 +===== macOS ===== 
 +  * Integrated Development Environments (IDEs): ​[[http://eclipse.org/|Eclipse]], [[http://​wiki.qt.io/​Category:​Tools::​QtCreator|Qt Creator]], [[https://​developer.apple.com/​xcode/​|XCode]] 
 +  * Text editors: ​[[https://www.gnu.org/​software/​emacs/|emacs]] 
 + 
 +===== Using IDEs ===== 
 +  * Set up [[Visual Studio Code]] 
 +  * Set up [[eclipse|Eclipse]] 
 +  * Set up [[KDevelop]] 
 +  * Set up [[emacs|Emacs]] 
 +  * Set up [[QtCreator]] 
 +  * Set up [[Xcode]]
  
-See Also +====== Debugging Tools ======
-  * Playing around with [[eclipse|Eclipse,​ CDT, and SconsBuilder plugin]] +
-  * How to setup Qt Creator for developing on Mixxx [[qtcreator|How to setup Qt Creator for developing on Mixxx]]+
  
-You can also use [[http://​qt-project.org/​downloads|Qt Creator]] for Mixxx development by creating a Qt project file for the source files. You can do this by running ''​qmake -project''​ under Mixxx'​s root directory. When using the created project file, you are able to use Creators editing features such as following symbols (F2) and switching between code and header files (F4). When compiling you will still have to resort to SCons as the project file will not resolve the dependencies. To accomplish this, switch to the project tab, remove any build steps and "Add Build Step"​->"​Custom Process Step". Enter ''​scons''​ as Command and any additional Command arguments (such as ''​qdebug=1''​ when in debug configuration). Respectively,​ follow the same procedure for the Clean Steps where you enter ''​-c''​ as Command argument. +===== GammaRay ​=====
-====== Console Dev Tools ======+
  
-On Ubuntu LinuxG uses:+[[https://​www.kdab.com/​gammaray|KDAB'​s GammaRay]] is a tool for dynamically inspecting applications built with Qt. Its feature set is too long to listbut of particular use for Mixxx development is:
  
-===== grep (wcolor) ===== +  * The ability to see all current signals/slots being fired by Mixxx, with the ability to jump to the object that is firing them. 
-  * [[http://packages.ubuntu.com/​hardy/​grep|grep]]+  * The ability to inspect the tree of all QObjects that exist, and for each object being able to see its properties, methods and inbound/output connections. 
 +  * The ability to debug the render process of a QWidget, showing you at each step of a QPainter what the widget looks like, including performance details about each step.
  
-  export GREP_COLOR='​1;​33'​ +===== Debuggers =====
-  export GREP_OPTIONS=--color=auto+
  
-===== colordiff ===== +Debuggers allow you to inspect the state of Mixxx while its running (and after Mixxx has crashed, via a core dump file)
-  * [[http://​packages.ubuntu.com/​hardy/​colordiff|colordiff]]+
  
-  ​alias svndiff='​(echo "​Running SVN diff (your changes vsthe repo)..." && ​(svn -x -w diff|colordiff))|less -R' +  ​* [[https://​www.gnu.org/​software/​gdb/​|gdb]] ​(for gcc
-  ​alias svnbasediff='​(echo "​Running SVN diff against BASE:HEAD (changes in the repo since last \"svn update\"​)..." && ​(svn diff -x -w -rBASE:​HEAD|colordiff))|less -R'+  ​* [[https://lldb.llvm.org/​|lldb]] ​(for Clang) 
 +  * Visual Studio (Windows-only)
  
-  * diff -y with automatic adjustment for term width.+===== Profilers =====
  
-  alias ydiff='​y_diff'​ +See [[profiling]].
-  function y_diff() { +
-    diff --width=${COLUMNS} -b -y "​$1"​ "​$2"​ | colordiff | less -R +
-  }+
  
  
-===== colormake and colorgcc ​==== +====== Command-line Tools ======
-  * [[http://​packages.ubuntu.com/​hardy/​colormake|colormake]] & [[http://​packages.ubuntu.com/​hardy/​colorgcc|colorgcc]]+
  
-  ### Color GCC +===== grep / ack ag ripgrep =====
-  if [ -z "​`which colorgcc`"​ ]; then +
-    echo Installing ColorGCC ... +
-    sudo aptitude install colorgcc +
-  fi +
-  if [ ! -z "​`which colorgcc`"​ ]; then +
-    export CC="​colorgcc"​ +
-    alias gcc='​colorgcc'​ +
-    for C in `grep /usr/bin /etc/​colorgcc/​colorgccrc | sed -e 's/# //' -e '​s/:​.*//'​`;​ do +
-      if [ ! -e /​usr/​local/​bin/​${C} ]; then +
-        echo "​Installing colorgcc wrapper in /​usr/​local/​bin for ${C}... " +
-        sudo ln -s /​usr/​bin/​colorgcc /​usr/​local/​bin/​${C} +
-      fi +
-    done +
-  fi +
-  ### Color Make +
-  if [ -z "​`which colormake`"​ ]; then +
-    echo Installing ColorMake ... +
-    sudo aptitude install colormake +
-  fi +
-  if [ ! -z "​`which colormake`"​ ]; then +
-    alias make='​colormake'​ +
-    if [ ! -e /​usr/​local/​bin/​make ]; then +
-      sudo ln -s /​usr/​bin/​colormake /​usr/​local/​bin/​make +
-    fi +
-  fi+
  
-===== source-highlight ===== +''​grep''​ is nice for searching files with regexes, but it isn't designed specifically for looking through ​source ​codeThere are a number of tools that make searching through ​source ​repositories much nicer (e.g. they won't go searching in the ''​.git''​ subfolder, or digging through binary files for your regex).
-  * [[http://​packages.ubuntu.com/​hardy/​source-highlight|source-highlight]] +
-  * Usage:  +
-    * vs somefile.cpp +
-    * vs SConscript+
  
-  ​alias vs="​view_source"​ +  ​* [[https://​beyondgrep.com/|ack]] 
-  function view_source { +  * [[https://​blog.burntsushi.net/​ripgrep/​|ripgrep]
-    lang_def=""​ +  ​* [[https://geoff.greer.fm/​ag/​|ag / The Silver Searcher]]
-    case "​`basename $1`" in +
-      SConscript|SConstruct) lang_def=python.lang;; +
-      .bashrc|.bashrc-extra) lang_def=sh.lang;;​ +
-      # ​*) lang_def=cpp;;​ +
-    esac +
-    if ! -z "​${lang_def}" ​]; then lang_def="​--lang-def=${lang_def}";​ fi +
-  ​ +
-    echo -e "​\033]0;​view-source$1\007\c"​ +
-    source-highlight ${lang_def} --out-format=esc --output=STDOUT "​$1"​ 2>/dev/null less -RN +
-  }+
  
-===== Nano editor ===== 
  
-  * [[http://​nano-editor.org|nano editor]] with color syntax highlighting 
  
-  * Syntax color highlighting [[http://​stacktrace.org/​archive/​.nanorc|.nanorc file]], you may have to run dos2unix on it. 
  
-  * Usage: ​ 
-    * nano somefile.cpp:​326:​error:​ some compiler error message 
  
-  alias nano='​smart_nano'​ 
-  ## Smart nano jumps to a line number when you give it filename:​nnn where nnn is the line number (like compile warnings/​errors) 
-  function smart_nano() { 
-    if [ -z "​$(echo \"​[email protected]\"​ | egrep [a-zA-Z0-9]:​[0-9]+)"​ ]; then 
-      /​usr/​bin/​nano -w -c "​[email protected]"​ 
-      return 
-    fi 
-    unset args 
-    echo 
-    while (( "​$#"​ )); do 
-      if [ ! -z "​${1}"​ ] && [ ! -z "`echo ${1}|cut -d: -f2|grep -e '​^[0-9]*$'​`"​ ]; then 
-        args[${#​args[@]}]=+$(echo ${1}|cut -d: -f2|grep -e '​^[0-9]*$'​) # Line Number Offset 
-        args[${#​args[@]}]=$(echo ${1}|cut -d: -f1) # File Name 
-      elif [ -f "​${1}"​ ]; then 
-        args[${#​args[@]}]=$1 
-      else 
-        echo "Nano could not find: $1"; sleep .5 
-      fi 
-      shift 
-    done 
-    /​usr/​bin/​nano -w -c "​${args[@]}"​ 
-  } 
developer_tools.1439959340.txt.gz · Last modified: 2015/08/19 00:42 by be.ing