Guide to building MariaDB on Windows using Visual Studio, CMake, and Git, including creating ZIP and MSI packages.
To build MariaDB you need the following:
Visual C++: We currently support Visual Studio 2019 and 2022. Generally we try to support the two most recent VS versions, but build ourselves using the last one. Community editions will work fine; we only use them in our builds. While installing Visual Studio, make sure to add "Desktop Development with C++". Also, make sure to use recent enough Windows SDK - latest Windows 11 SDK is recommended.
: We recommend the latest release. Older releases might not support your version of Visual Studio. Visual Studio 2019 requires cmake 3.14 at least.
: Required to build newer versions from the source tree.
NOTE: run
after the installation, otherwise some mtr tests will fail
In the "Adjusting your PATH" dialog, choose "Use Git from Windows command prompt", otherwise wrong (mingw64) git and perl will be in your PATH
: Bison creates parts of the SQL parser. Choose "Complete package except sources" when downloading.
NOTE: Do not install this into your default path with spaces
(e.g. under C:\Program Files\GnuWin32); the build will break due to .
Instead, install into C:\GnuWin32.
Add C:\GnuWin32\bin to your system PATH
Verify that bison.exe, or git.exe, cmake.exe and perl.exe can be found in the PATH
environment variable with "where bison", "where git", "where perl" etc. from
the command line prompt.
The above instructions assume or higher.
Branch the MariaDB repository, or unpack the source archive. On the command prompt, switch to your source directory, then execute:
The above example builds a release configured for 64 bit systems in a
subdirectory named bld. "cmake ..." is the configuration step,
"cmake --build . --config Relwithdebinfo" is the build step.
Building Debug version is done with:
Visual Studio 2019-2022 cmake generator will use host architecture by default, that is, with the steps above, cmake will build x64 binaries on x64 machine.
pass -A Win32 parameter for cMake, like this
Historical note:
With Visual Studio 2017 and earlier, one had to pass the name of 32bit generator ,e.g
cmake .. -G "Visual Studio 15 2017
For a complete list of available generators, call cmake without any parameters.
Instead of calling "cmake --build" as above, open solution file MariaDB.sln (in older versions, prior to 11.0, MySQL.sln ). When Visual Studio starts, choose Build/Compile.
This is how it is "done by the book", standard cmake target.
MariaDB however uses non-standard target win_package for the packaging for its releases, it generates 2 ZIPs, a slim one with executables, and another one with debuginfo (.PDB files). The debuginfo is important to be able to debug released binaries, and to analyze crashes.
Starting with , it is possible to build an installer which
includes 3rd party products, as described in . Currently only support is implemented; it is also
included in the official builds. Use the CMake parameter-DWITH_THIRD_PARTY=HeidiSQL to include it in the installer.
MariaDB builds optionally support authenticode code signing with an optional
parameter SIGNCODE. Use cmake -DSIGNCODE=1 during the
configuration step to sign the binaries in the ZIP and MSI packages.
Important: for SIGNCODE=1 to work, the user that runs the build needs to
install a valid authenticode digital certificate into their certificate store,
otherwise the packaging step will fail.
The full script to create the release in an out-of-source build with Visual Studio with signed binaries might look like:
This command sequence will produce a ZIP package (e.g mariadb-5.2.6-win32.zip)
and MSI package (e.g mariadb-5.2.6-win32.msi) in the bld directory.
Important: Do not use Cygwin bash, MinGW bash, Git bash, WSL bash, or any other bash when running the test suite. You will then very likely use the wrong version of Perl too (a "Unix-flavoured" one on Windows), and spend a lot of time trying to figure out why this version of Perl does not work for the test suite. Use native perl, in cmd.exe , or powershell instead,
Switch mysql-test subdirectory of the build directory
Run the test suite
Assuming VS is installed on the machine
If vsjitdebugger does not start, you can edit AeDebug registry key as mentioned in
Alternatively:
(devenv.exe needs to be in PATH)
or, if you prefer WinDBG
This page is licensed: CC BY-SA / Gnu FDL
Strawberry perl: Used to run the test suite.ActiveState Perl is
another Win32 Perl distribution and should work as well (but it is not as
well tested). NOTE: Cygwin or mingw Perl versions will not work for testing. Use Windows native Perl, please.
Optional: If you intend to build the MSI packages, install Windows Installer XML . If you build MSI with 10.4, also modify your Visual Studio installation, add "Redistributable MSMs" (see MDEV-22555)
Gnu Diff, needed if you run mysql-test-run.pl tests.
git config --global core.autocrlf inputmkdir bld
cd bld
cmake ..
cmake --build . --config RelWithDebInfocmake --build . --config Debugcmake .. -A Win32cmake --build . --config relwithdebinfo --target packagecmake --build . --config relwithdebinfo --target win_packagecmake --build . --config relwithdebinfo
cmake --build . --config relwithdebinfo --target MSImkdir bld
cd bld
cmake .. -DSIGNCODE=1 -DWITH_THIRD_PARTY=HeidiSQL
cmake --build . --config relwithdebinfo --target win_package
cmake --build . --config relwithdebinfo --target MSIcd C:\server\bld\mysql-testperl mysql-test-run.pl --suite=main --parallel=autoperl mysql-test-run.pl <test_name> --vsjitdebuggerperl mysql-test-run.pl <test_name> --devenvperl mysql-test-run.pl <test_name> --windbg