Tools of the Trade

From FlightGear wiki
Jump to navigation Jump to search

Misc tools (proprietary but freely available)

IDEs

  • Microsoft Visual Studio Community [1] - the modern version of Microsoft's IDE. The Community edition is free.
  • Visual Studio Code [2] - lightweight, cross-platform, open-source code editor with excellent C/C++ support via extensions.

Shader Development

  • RenderDoc - modern, open-source GPU debugger that supports shader debugging (Vulkan, D3D11/12, OpenGL, OpenGL ES).
  • Nsight Graphics (NVIDIA) - powerful GPU shader debugging and profiling tool.
  • AMD Radeon GPU Profiler - AMD's modern replacement for RenderMonkey/FX Composer.

Debuggers & Profilers

OpenGL Debugging

Free/Open Source

Build related

  • CMake - modern cross-platform build system (replaces autotools for many projects).
  • Meson - fast, user-friendly build system.
  • Ninja - small, fast build system focused on speed.
  • GNU make - still widely used, but often invoked via CMake/Meson.

Speeding up compilations/rebuilds

  • ccache - compiler cache for GCC/Clang/MSVC. Actively maintained.
  • distcc - distributed compilation (still maintained).
  • sccache - similar to ccache, with cloud storage support (modern alternative).
  • icecream - modern distributed compilation system.
  • Using tmpfs/ram drives for compilation speed (still relevant on HDDs; less critical on NVMe SSDs):
  • LLD - LLVM's linker, significantly faster than GNU ld or Gold.

Documentation

  • Doxygen - still actively maintained and widely used for source code documentation.
  • MkDocs or Sphinx - modern alternatives for documentation generation.

Debugging

  • GDB - still the standard console debugger.
  • cgdb - modern curses-based GDB frontend (replaces DDD).
  • rr - lightweight recording/debugging for Linux (modern replacement for many DDD use cases).
  • Insiomnia (moved to SymBreak) - modern debugger for Linux from Microsoft.

Memory Usage

Profiling

Source Code Management / Revision Control Systems

  • git - modern standard for version control.
  • Subversion (SVN) - for legacy projects.
  • Mercurial - alternative distributed VCS.