From BlenderWiki

Jump to: navigation, search

Introduction

This is how to build Blender from its SVN source using MinGW with CMake. After setup all properly, in the future, for automatic downloading current SVN and compile it - just run .bat file ! Firstly download and install:

  1. CMake http://www.cmake.org/cmake/resources/software.html
  2. MinGW http://www.mingw.org/wiki/Getting_Started
  3. TortoiseSVN http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-intro-install.html (You don't need to install TortoiseSVN, instead use just Windows Command line).

Set up your local repository

Create a folder to store your copy of the Blender source code. This guide will assume it is C:\BlenderSVN. Then use either the command line or TortoiseSVN to download (checkout) the Blender source code and pre-compiled libraries.

Command line

Open command prompt window by hitting Windows+R, and then typing cmd, or by searching for it in the start menu.

At the command prompt type the following commands:

cd C:\BlenderSVN
svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/blender blender

This will checkout the source files to blender/


If you plan on building 32-bit binaries with Microsoft Visual Studio, checkout the precompiled library files by typing:

svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/windows  lib/windows

If building 32-bit binaries with MinGW, type:

svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/mingw32 lib/mingw32

This will checkout the libraries to lib/windows/ or lib/mingw32/ respectively.


If you are going to be compiling 64-bit binaries using Microsoft Visual Studio, do this instead for the libraries:

svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64 lib/win64

Otherwise if building 64-bit binaries with MinGW-w64, type:

svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/mingw64 lib/mingw64

Again, this will check the libraries out in lib/win64/ or lib/mingw64/ respectively.

TortoiseSVN

Right-click the C:\BlenderSVN folder and select SVN checkout from the menu. A window will appear. For the URL of the repository enter:

https://svn.blender.org/svnroot/bf-blender/trunk/blender

Then verify that the checkout directory is:

C:\BlenderSVN\blender

Repeat the above steps for:

  • Precompiled libraries (if building 32-bit with Visual Studio):
    Repository: https://svn.blender.org/svnroot/bf-blender/trunk/lib/windows
    Directory: C:\BlenderSVN\lib\windows
  • Precompiled libraries (if building 32-bit with MinGW):
    Repository: https://svn.blender.org/svnroot/bf-blender/trunk/lib/mingw32
    Directory: C:\BlenderSVN\lib\mingw32
  • Precompiled libraries (if building 64-bit with Visual Studio):
    Repository: https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64
    Directory: C:\BlenderSVN\lib\win64
  • Precompiled libraries (if building 64-bit with MinGW-w64):
    Repository: https://svn.blender.org/svnroot/bf-blender/trunk/lib/mingw64
    Directory: C:\BlenderSVN\lib\mingw64

Updating your repository

To keep your local Blender source code up to date, you will need to do a SVN update once in a while. You can either do this from a command line, or using TortoiseSVN. The most convenient way of doing this is to make a batch file containing the SVN commands.

Command line

Create this batch (.bat) file in C:\BlenderSVN\:

For Microsoft Visual Studio 32-bit:

cd lib\windows
svn update
cd ..\..\blender
svn update
pause

For MinGW (32-bit):

cd lib\mingw32
svn update
cd ..\..\blender
svn update
pause

For Microsoft Visual Studio 64-bit:

cd lib\win64
svn update
cd ..\..\blender
svn update
pause

For MinGW-w64:

cd lib\mingw64
svn update
cd ..\..\blender
svn update
pause

Run this newly created .bat file whenever you want to update.

TortoiseSVN

Right click on the C:/BlenderSVN/blender folder and choose SVN Update. A TortoiseSVN window will appear listing the files that is updating.

Once the process is finished it will print Completed At Revision: xxxxx at the end of the list. Just click the OK button to dismiss the dialog.

Repeat the above steps with the C:/BlenderSVN/lib/windows, C:/BlenderSVN/lib/win64, C:/BlenderSVN/lib/mingw32, and/or C:/BlenderSVN/lib/mingw64 folders to update the precompiled libraries, depending on what build environment you use.

Command line TortoiseSVN

Note: obsolete information. Latest TortoiseSVN can use the above command line if command line tools are selected during installation

As with the command line SVN, create a batch (.bat) file in C:\BlenderSVN\:

TortoiseProc.exe /command:update /path:"C:\BlenderSVN\blender" /notempfile /closeonend:1
TortoiseProc.exe /command:update /path:"C:\BlenderSVN\lib\windows" /notempfile /closeonend:1
pause

For 64-bit:

TortoiseProc.exe /command:update /path:"C:\BlenderSVN\blender" /notempfile /closeonend:1
TortoiseProc.exe /command:update /path:"C:\BlenderSVN\lib\win64" /notempfile /closeonend:1
pause


Building Blender with CMake

Configure Options

Using cmake-gui

cmake-gui is a graphical interface for configuring cmake and generating project files and make files, it does not actually build however.

Open cmake-gui and point to the source tree (C:\BlenderSVN\blender) and a destination directory for the temporarily object and executables files (example: C:\BlenderSVN\cmake-build). Select the target build system (MinGW Makefiles for example). Hit the 'configure' button twice, optionally change some settings, and hit 'generate'. If you experience an error complaining about missing .dll's (such as libgmp-10.dll), then you will need to add C:\MinGW\bin (or C:\mingw64\bin) to your %PATH%.

After that you can build using the generated build files.


Compile using MinGW

Now cmake has generated the Makefile, open a console (run as administrator), and run make in the cmake build dir...

cd C:\BlenderSVN\cmake-build
mingw32-make
mingw32-make install

Now you can run blender from C:\BlenderSVN\cmake-build\bin\blender.exe

Building with MinGW64

To build make sure you have extracted your compiler to C:/mingw64 and that you have set it in your $PATH. For cmake, use -DWITH_MINGW64=ON to use it. To use it with CMakeGUI, make sure the advanced mode is turned on and Add Entry variable WITH_MINGW64 set to value ON before configuring.

For redistributable builds You will have to copy the pthread library from MinGW/bin


Blender3D FreeTip.gif
Parallel Builds
For multi-core / multi processor systems you can build much faster by passing the jobs argument to make: -j(1+number_of_cores).

For example put "-j3" if you have a dual-core or "-j5" if you have a quad-core.
For Shell-scripts use GNU-Syntax: expr `nproc` + 1 or Bash-Syntax: $((`nproc`+1))

If it's still not using all your CPU power, leave out the number: "-j" to spawn as many as possible build processes (usually 64).
Note that it may build faster, but make your system lag in the meanwhile.

Troubleshooting

Compile errors with Visual Studio 2008 PRO

When you get compile errors with functions from the c++ std:: library then please make sure that you have the "Visual studio 2008 Service pack 1" installed besides your Visual Studio 2008 Pro installation.

Cycles And CUDA Binaries

Currently CUDA GPU Toolkit 4.2 is supported: https://developer.nvidia.com/cuda-toolkit-42-archive

If you want to build with cycles and CUDA binaries you also need to install Microsoft Visual Studio (MSVC) 2008 as well and run the build process from a MSVC terminal. This is needed because the CUDA compiler needs to use the MSVC compiler.

For 64-bit builds(such as MinGW-w64) the CUDA compiler will need the 64bit toolset. It is possible to get this without MSVC professional by downloading the Windows SDK (version 7.1 has a very buggy installation but 7.0 iso should work) Additionally, there's one other thing to change for a 64-bit system. Apparently the cuda compiler has a "hard-coded" directory for 64-bit compilers. To make the fix, copy the needed file "vcvars64.bat" and rename it to "vcvarsamd64.bat" as follows:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat

to

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat

(method copied from: http://stackoverflow.com/questions/2970493/cuda-linking-error-visual-express-2008-nvcc-fatal-due-to-null-configuratio ) Then you should be able to generate 64bit kernels from a MSVC terminal.


nvcc fatal

When building via mingw and Windows SDK, Cuda compiler could fail with following message(even for 64bit building):

nvcc fatal : Visual Studio configuration file 'vsvars32.bat' could not be found for installation at 'C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/../../..'

to solve that problem, you need to copy 'vcvars32.bat' and rename it to 'vsvars32.bat' as follows:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat

to

C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat

(this workaround was taken from nvidia dev talk forum: https://devtalk.nvidia.com/default/topic/462599/vsvars32-bat-not-found-error-on-compiling-samples-with-vsvars32-bat/)



Fail to start release or builds from buildbot

Usually this means the Microsoft Visual Studio 2008 redistributable packages aren't installed in your system. They can be easily found at Microsoft's download center page.

If you've got PYTHONPATH environment variable pointing to an older version of Python, it'll lead to Microsoft Visual C++ runtime library failure. If you've got such kind of error message, check on your environment variables.

Missing DLL's With MinGW

If you get a popup when configuring CMake or running SCons that says

libgmp-10.dll not found

This is because the DLL MinGW installs is not in the path, resolve this by adding "C:\MinGW\bin" to you're PATH environment variable.

MinGW & Redistribution

MinGW uses a few DLLs deal with runtime libraries so if you bundle builds for others, copy libgcc*.dll and libstdc++*.dll from MinGW/bin next to your new Blender executable. If you build with OpenMP, libgomp.dll will also be needed. This will make the builds usable even for people who don't have MinGW or PATH setup correctly.

Fail to Initialize with MinGW

If you get this error, installing python may resolve this, even though Blender comes with python.

The application failed to initialize properly (.....)
Click on OK to terminate the application.

Debug Builds

Without MSVC 2008 installed you may get an error like this on launch.

The application failed to initialize properly (0xc9159992).
Click on OK to terminate the application.

This is because python32_d.dll needs MSVC 2008 installed to run. Both the Full version or Express will work.

So even if you build with MinGW or MSVC 2010, to run debug builds you need MSVC 2008.

MSVC Express Has No OpenMP support

If you build with MSVC Express you must disable OpenMP (which will make some parts of Blender not use multiple processors).

  • on SCons disable WITH_BF_OPENMP
  • on CMake disable WITH_OPENMP

SCons Environment Variable problem

If one ore more environment variable contains a value with non-ASCII characters you'll see an error message appear since r34956 (older revision will throw a UnicodeDecodeError exception). It looks like this:

D:\blenderdev\currentsvn>python scons\scons.py BF_CONFIG=graphicall_32b
scons: Reading SConscript files ...
================
 
 
@@ ABORTING BUILD @@
 
PROBLEM DETECTED WITH ENVIRONMENT
---------------------------------
 
 
A problem with one or more environment variable was found
Their value contain non-ascii characters. Check the below
list and override them locally to be ASCII-clean by doing
'set VARNAME=cleanvalue' on the command-line prior to
starting the build process:
 
USERNAME = Näthan
TESTVAR = ElNiño

You don't have to change the main environment, it's enough to override the offending variables for the session. You could create a .bat with the overrides, so it's easy to run it whenever you open a new VS command prompt.