You can build MySQL on Windows by using a combination of cmake and Microsoft Visual Studio .NET 2003 (7.1), Microsoft Visual Studio 2005 (8.0), Microsoft Visual Studio 2008 (9.0) or Microsoft Visual C++ 2005 Express Edition. You must have the appropriate Microsoft Platform SDK installed.
          To compile from the source code on Windows you must use the
          standard source distribution (for example,
          mysql-5.1.47.tar.gz). You
          build from the same distribution as used to build MySQL on
          Unix, Linux and other platforms. Do not
          use the Windows Source distributions as they do not contain
          the necessary configuration script and other files.
        
Follow this procedure to build MySQL:
            If you are installing from a packaged source distribution,
            create a work directory (for example,
            C:\workdir), and unpack the source
            distribution there using WinZip or
            another Windows tool that can read .zip
            files. This directory is the work directory in the following
            instructions.
          
              You must run the commands in the win
              directory from the top-level source directory. Do not
              change into the win directory, as the
              commands will not be executed correctly.
            
            Start a command shell. If you have not configured the
            PATH and other environment variables for
            all command shells, you may be able to start a command shell
            from the Start Menu within the Windows
            Visual Studio menu that contains the necessary environment
            changes.
          
Within the command shell, navigate to the work directory and run the following command:
C:\workdir>win\configure.js options
            If you have associated the .js file
            extension with an application such as a text editor, then
            you may need to use the following command to force
            configure.js to be executed as a
            script:
          
C:\workdir>cscript win\configure.js options
            These options are available for
            configure.js:
          
                WITH_INNOBASE_STORAGE_ENGINE: Enable
                the InnoDB storage engine.
              
                WITH_PARTITION_STORAGE_ENGINE: Enable
                user-defined partitioning.
              
                WITH_ARCHIVE_STORAGE_ENGINE: Enable
                the ARCHIVE storage engine.
              
                WITH_BLACKHOLE_STORAGE_ENGINE: Enable
                the BLACKHOLE storage engine.
              
                WITH_EXAMPLE_STORAGE_ENGINE: Enable
                the EXAMPLE storage engine.
              
                WITH_FEDERATED_STORAGE_ENGINE: Enable
                the FEDERATED storage engine.
              
                WITH_NDBCLUSTER_STORAGE_ENGINE
                (experimental): Enable the
                NDBCLUSTER storage engine in the
                MySQL server; cause binaries for the MySQL Cluster
                management and data node, management client, and other
                programs to be built.
              
                This option is supported only in MySQL Cluster NDB 7.0
                (NDBCLUSTER storage engine
                versions 6.4.0 and later) using the MySQL Cluster
                sources. It cannot be used to enable clustering support
                in other MySQL source trees or distributions.
              
                MYSQL_SERVER_SUFFIX=:
                Server suffix, default none.
              suffix
                COMPILATION_COMMENT=:
                Server comment, default "Source distribution".
              comment
                MYSQL_TCP_PORT=:
                Server port, default 3306.
              port
                DISABLE_GRANT_OPTIONS: Disables the
                --bootstrap,
                --skip-grant-tables, and
                --init-file options for
                mysqld. This option is available as
                of MySQL 5.1.15.
              
For example (type the command on one line):
C:\workdir>win\configure.js WITH_INNOBASE_STORAGE_ENGINEWITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
            From the work directory, execute the
            win\build-vs9.bat (Windows Visual
            Studio 2008), win\build-vs8.bat
            (Windows Visual Studio 2005), or
            win\build-vs71.bat (Windows Visual
            Stidion 2003) script, depending on the version of Visual
            Studio you have installed. The script invokes CMake, which
            generates the mysql.sln solution file.
          
            You can also use the corresponding 64-bit file (for example
            win\build-vs8_x64.bat or
            win\build-vs9_x64.bat) to build the
            64-bit version of MySQL. However, you cannot build the
            64-bit version with Visual Studio Express Edition. You must
            use Visual Studio 2005 (8.0) or higher.
          
            From the work directory, open the generated
            mysql.sln file with Visual Studio and
            select the proper configuration using the
            Configuration menu. The menu provides
            Debug,
            Release,
            RelwithDebInfo,
            MinRelInfo options. Then select
            Solution >
            Build to build the solution.
          
Remember the configuration that you use in this step. It is important later when you run the test script because that script needs to know which configuration you used.
            Test the server. The server built using the preceding
            instructions expects that the MySQL base directory and data
            directory are C:\mysql and
            C:\mysql\data by default. If you want
            to test your server using the source tree root directory and
            its data directory as the base directory and data directory,
            you need to tell the server their path names. You can either
            do this on the command line with the
            --basedir and
            --datadir options, or by
            placing appropriate options in an option file. (See
            Using Option Files.) If you have an existing
            data directory elsewhere that you want to use, you can
            specify its path name instead.
          
When the server is running in standalone fashion or as a service based on your configuration, try to connect to it from the mysql interactive command-line utility.
            You can also run the standard test script,
            mysql-test-run.pl. This script is written
            in Perl, so you'll need either Cygwin or ActiveState Perl to
            run it. You may also need to install the modules required by
            the script. To run the test script, change location into the
            mysql-test directory under the work
            directory, set the MTR_VS_CONFIG
            environment variable to the configuration you selected
            earlier (or use the --vs-config option),
            and invoke mysql-test-run.pl. For example
            (using Cygwin and the bash shell):
          
shell>cd mysql-testshell>export MTR_VS_CONFIG=debugshell>./mysql-test-run.pl --force --timershell>./mysql-test-run.pl --force --timer --ps-protocol
        When you are satisfied that the programs you have built are
        working correctly, stop the server. Now you can install the
        distribution. One way to do this is to use the
        make_win_bin_dist script in the
        scripts directory of the MySQL source
        distribution (see make_win_bin_dist). This is
        a shell script, so you must have Cygwin installed if you want to
        use it. It creates a Zip archive of the built executables and
        support files that you can unpack in the location at which you
        want to install MySQL.
      
It is also possible to install MySQL by copying directories and files directly:
            Create the directories where you want to install MySQL. For
            example, to install into C:\mysql, use
            these commands:
          
C:\>mkdir C:\mysqlC:\>mkdir C:\mysql\binC:\>mkdir C:\mysql\dataC:\>mkdir C:\mysql\shareC:\>mkdir C:\mysql\scripts
If you want to compile other clients and link them to MySQL, you should also create several additional directories:
C:\>mkdir C:\mysql\includeC:\>mkdir C:\mysql\libC:\>mkdir C:\mysql\lib\debugC:\>mkdir C:\mysql\lib\opt
If you want to benchmark MySQL, create this directory:
C:\> mkdir C:\mysql\sql-bench
Benchmarking requires Perl support. See Perl Installation Notes.
            From the work directory, copy into the
            C:\mysql directory the following files
            and directories:
          
C:\>cd \workdirC:\workdir>mkdir C:\mysqlC:\workdir>mkdir C:\mysql\binC:\workdir>copy client\Release\*.exe C:\mysql\binC:\workdir>copy sql\Release\mysqld.exe C:\mysql\bin\mysqld.exeC:\workdir>xcopy scripts\*.* C:\mysql\scripts /EC:\workdir>xcopy share\*.* C:\mysql\share /E
If you want to compile other clients and link them to MySQL, you should also copy several libraries and header files:
C:\workdir>copy lib\Release\mysqlclient.lib C:\mysql\lib\debugC:\workdir>copy lib\Release\libmysql.* C:\mysql\lib\debugC:\workdir>copy lib\Release\zlib.* C:\mysql\lib\debugC:\workdir>copy lib\Release\mysqlclient.lib C:\mysql\lib\optC:\workdir>copy lib\Release\libmysql.* C:\mysql\lib\optC:\workdir>copy lib\Release\zlib.* C:\mysql\lib\optC:\workdir>copy include\*.h C:\mysql\includeC:\workdir>copy libmysql\libmysql.def C:\mysql\include
              If you have compiled a Debug, rather than Release
              solution, you can replace Release
              with Debug in the source file names
              shown above.
            
If you want to benchmark MySQL, you should also do this:
C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E
After installation, set up and start the server in the same way as for binary Windows distributions. This includes creating the system tables by running mysql_install_db. For more information, see Chapter 1, Installing MySQL on Windows.

