Skip to content
Switch branches/tags
Go to file

Latest commit

Adds a cross-platform script that automates the process of creating a
build directory and compiling MuseScore. Run the script like this:

    $ cmake -P build.cmake [args...]

This works in all shells on all platforms. Developers with a Unix-like
environment (including Git Bash on Windows) can also use:

    $ ./build.cmake [args...]

Build step arguments:

    clean       Delete the build directory.
    configure   Create a build directory and run CMake inside it.
    build       Compile code using the native build tool.
    install     Copy compiled files to final destinations.
    run         Run the installed program.

Each step implies all previous steps except 'clean' and 'run', which
are only performed when explictly requested. If no steps are given then
the configure, build, and install steps are performed by default.

All other arguments are passed to CMake during configuration.

Example command:

    $ cmake -P build.cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
    $ cmake -P build.cmake -GNinja -DCMAKE_BUILD_TYPE=Debug run -F

This creates and installs a Debug build using the Ninja generator, and
then runs the compiled program with the -F option to perform a factory
reset, thereby ensuring it is in the initial state.


If you frequently need to build with non-default settings then you can
create a file build_overrides.cmake with all your personal settings to
avoid having to pass them in on the command line each time.

    # build_overrides.cmake example file

    set(ENV{QTDIR} "$ENV{HOME}/Qt/5.15.2/gcc_64")

This file is ignored by Git to prevent it being shared with other
developers, but you could always copy another file into its place
(e.g. during a CI build on GitHub Actions).


Failed to load latest commit information.
Latest commit message
Commit time
Dec 2, 2020
Feb 1, 2021
Dec 2, 2020

MuseScore Music notation and composition software

License: GPL v2

MuseScore is an open source and free music notation software. For support, contribution, and bug reports visit Fork and make pull requests!


  • WYSIWYG design, notes are entered on a "virtual notepaper"
  • TrueType font(s) for printing & display allows for high quality scaling to all sizes
  • Easy & fast note entry
  • Many editing functions
  • MusicXML import/export
  • MIDI (SMF) import/export
  • MuseData import
  • MIDI input for note entry
  • Integrated sequencer and software synthesizer to play the score
  • Print or create pdf files

More info


MuseScore is licensed under GPL version 2.0. See LICENSE.GPL in the same directory.


See Code Structure on Wiki


Read the developer handbook for a complete build walkthrough and a list of dependencies.

Getting sources

If using git to download repo of entire code history, type:

git clone
cd MuseScore

Otherwise, you can just download the latest source release tarball from the Releases page, and then from your download directory type:

tar xzf MuseScore-x.x.x.tar.gz
cd MuseScore-x.x.x

Release Build

To compile MuseScore for release, type:

cmake -P build.cmake -DCMAKE_BUILD_TYPE=Release

If something goes wrong, append the word "clean" to the above command to delete the build subdirectory:

cmake -P build.cmake -DCMAKE_BUILD_TYPE=Release clean

Then try running the first command again.


To start MuseScore, type:

cmake -P build.cmake -DCMAKE_BUILD_TYPE=Release run

Or run the compiled executable directly.

Debug Build

A debug version can be built and run by replacing -DCMAKE_BUILD_TYPE=Release with -DCMAKE_BUILD_TYPE=Debug in the above commands.

If you omit the -DCMAKE_BUILD_TYPE option entirely then RelWithDebInfo is used by default, as it provides a useful compromise between Release and Debug.


See mtest/ or the developer handbook for instructions on how to run the test suite.

The new script testing facility is also available to create your own automated tests. Please try it out!

Code Formatting

Run ./hooks/ to install a pre-commit hook that will format your staged files. Requires that you install uncrustify.

If you have problems, please report them. To uninstall, run ./hooks/