Developer Tools - Holzhaus/mixxx GitHub Wiki
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
- Integrated Development Environments (IDEs): KDevelop, Eclipse, Qt Creator
- Text editors: gedit, kate, SciTE, emacs
- Git tools: gitk (comes with git), git-cola, gitg
Windows
- Integrated Development Environments (IDEs): Visual Studio Community, Visual Studio Code, Eclipse, Qt Creator
- Text editors: Notepad++, emacs
- Git tools: Tortise Git, Git Extensions
macOS
- Integrated Development Environments (IDEs): Eclipse, Qt Creator, XCode
- Text editors: emacs
Using IDEs
- Set up Visual Studio Community
- Set up Visual Studio Code
- Set up Eclipse
- Set up KDevelop
- Set up Emacs
- Set up QtCreator
- Set up Xcode
- Set up CLion
Debugging Tools
GammaRay
KDAB's GammaRay is a tool for dynamically inspecting applications built with Qt. Its feature set is too long to list, but of particular use for Mixxx development is:
- The ability to see all current signals/slots being fired by Mixxx, with the ability to jump to the object that is firing them.
- 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.
Debuggers
Debuggers allow you to inspect the state of Mixxx while its running (and after Mixxx has crashed, via a core dump file).
Profilers
See profiling.
Command-line Tools
grep / ack / ag / ripgrep
grep
is nice for searching files with regexes, but it isn't designed
specifically for looking through source code. There 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).