2 REM This batch file does an out-of-source CMake build in ../build_windows
3 REM This is for users who like to configure & build Blender with a single command.
5 setlocal ENABLEEXTENSIONS
7 set BLENDER_DIR_NOSPACES=%BLENDER_DIR: =%
8 if not "%BLENDER_DIR%"=="%BLENDER_DIR_NOSPACES%" (
9 echo There are spaces detected in the build path "%BLENDER_DIR%", this is currently not supported, exiting....
12 set BUILD_DIR=%BLENDER_DIR%..\build_windows
13 set BUILD_TYPE=Release
14 rem reset all variables so they do not get accidentally get carried over from previous builds
37 REM Build Configurations
38 ) else if "%1" == "with_tests" (
39 set TESTS_CMAKE_ARGS=-DWITH_GTESTS=On
40 ) else if "%1" == "full" (
42 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
43 -C"%BLENDER_DIR%\build_files\cmake\config\blender_full.cmake"
44 ) else if "%1" == "lite" (
46 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
47 -C"%BLENDER_DIR%\build_files\cmake\config\blender_lite.cmake"
48 ) else if "%1" == "cycles" (
50 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
51 -C"%BLENDER_DIR%\build_files\cmake\config\cycles_standalone.cmake"
52 ) else if "%1" == "headless" (
54 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
55 -C"%BLENDER_DIR%\build_files\cmake\config\blender_headless.cmake"
56 ) else if "%1" == "bpy" (
58 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
59 -C"%BLENDER_DIR%\build_files\cmake\config\bpy_module.cmake"
60 ) else if "%1" == "release" (
62 ) else if "%1" == "x86" (
64 ) else if "%1" == "x64" (
66 ) else if "%1" == "2017" (
68 set BUILD_VS_YEAR=2017
69 ) else if "%1" == "2015" (
71 set BUILD_VS_YEAR=2015
72 ) else if "%1" == "2013" (
74 set BUILD_VS_YEAR=2013
75 ) else if "%1" == "packagename" (
76 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DCPACK_OVERRIDE_PACKAGENAME="%2"
78 ) else if "%1" == "nobuild" (
80 ) else if "%1" == "showhash" (
81 for /f "delims=" %%i in ('git rev-parse HEAD') do echo Branch_hash=%%i
82 cd release/datafiles/locale
83 for /f "delims=" %%i in ('git rev-parse HEAD') do echo Locale_hash=%%i
85 cd release/scripts/addons
86 for /f "delims=" %%i in ('git rev-parse HEAD') do echo Addons_Hash=%%i
89 REM Non-Build Commands
90 ) else if "%1" == "update" (
93 git submodule foreach git pull --rebase origin master
95 ) else if "%1" == "clean" (
98 echo Command "%1" unknown, aborting!
105 if "%BUILD_ARCH%"=="" (
106 if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
107 set WINDOWS_ARCH= Win64
109 ) else if "%PROCESSOR_ARCHITEW6432%" == "AMD64" (
110 set WINDOWS_ARCH= Win64
116 ) else if "%BUILD_ARCH%"=="x64" (
117 set WINDOWS_ARCH= Win64
118 ) else if "%BUILD_ARCH%"=="x86" (
122 if "%BUILD_VS_VER%"=="" (
124 set BUILD_VS_YEAR=2013
127 if "%BUILD_ARCH%"=="x64" (
128 set MSBUILD_PLATFORM=x64
129 ) else if "%BUILD_ARCH%"=="x86" (
130 set MSBUILD_PLATFORM=win32
134 if "%target%"=="Release" (
135 rem for vc12 check for both cuda 7.5 and 8
136 if "%CUDA_PATH%"=="" (
137 echo Cuda Not found, aborting!
140 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
141 -C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake"
145 REM Detect MSVC Installation for 2013-2015
146 if DEFINED VisualStudioVersion goto msvc_detect_finally
147 set VALUE_NAME=ProductDir
149 set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%BUILD_VS_VER%.0\Setup\VC"
150 for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO set MSVC_VC_DIR=%%C
151 if DEFINED MSVC_VC_DIR goto msvc_detect_finally
153 set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\%BUILD_VS_VER%.0\Setup\VC"
154 for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO set MSVC_VC_DIR=%%C
155 if DEFINED MSVC_VC_DIR goto msvc_detect_finally
157 if DEFINED MSVC_VC_DIR call "%MSVC_VC_DIR%\vcvarsall.bat"
158 if DEFINED MSVC_VC_DIR goto sanity_checks
160 rem MSVC Build environment 2017 and up.
161 for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SXS\VS7" /v %BUILD_VS_VER%.0 2^>nul`) DO set MSVC_VS_DIR=%%C
162 if DEFINED MSVC_VS_DIR goto msvc_detect_finally_2017
164 for /F "usebackq skip=2 tokens=1-2*" %%A IN (`REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\sxs\vs7" /v %BUILD_VS_VER%.0 2^>nul`) DO set MSVC_VS_DIR=%%C
165 if DEFINED MSVC_VS_DIR goto msvc_detect_finally_2017
166 :msvc_detect_finally_2017
167 if DEFINED MSVC_VS_DIR call "%MSVC_VS_DIR%\Common7\Tools\VsDevCmd.bat"
172 if %ERRORLEVEL% NEQ 0 (
173 if "%BUILD_VS_VER%"=="12" (
174 rem vs12 not found, try vs14
175 echo Visual Studio 2013 not found, trying Visual Studio 2015.
177 set BUILD_VS_YEAR=2015
180 echo Error: "MSBuild" command not in the PATH.
181 echo You must have MSVC installed and run this from the "Developer Command Prompt"
182 echo ^(available from Visual Studio's Start menu entry^), aborting!
188 set BUILD_DIR=%BUILD_DIR%_%TARGET%_%BUILD_ARCH%_vc%BUILD_VS_VER%_%BUILD_TYPE%
192 if %ERRORLEVEL% NEQ 0 (
193 echo Error: "CMake" command not in the PATH.
194 echo You must have CMake installed and added to your PATH, aborting!
197 if NOT EXIST %BLENDER_DIR%..\lib\nul (
198 echo Error: Path to libraries not found "%BLENDER_DIR%..\lib\"
199 echo This is needed for building, aborting!
203 echo Error: Convenience target not set
204 echo This is required for building, aborting!
209 set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS%
210 if NOT EXIST %BUILD_DIR%\nul (
213 if "%MUST_CLEAN%"=="1" (
214 echo Cleaning %BUILD_DIR%
216 %BUILD_DIR%\Blender.sln ^
218 /property:Configuration=%BUILD_TYPE% ^
220 /p:platform=%MSBUILD_PLATFORM%
222 if %ERRORLEVEL% NEQ 0 (
223 echo Cleaned "%BUILD_DIR%"
227 REM Only configure on first run or when called with nobuild
228 if NOT EXIST %BUILD_DIR%\Blender.sln set MUST_CONFIGURE=1
229 if "%NOBUILD%"=="1" set MUST_CONFIGURE=1
231 if "%MUST_CONFIGURE%"=="1" (
238 if %ERRORLEVEL% NEQ 0 (
239 echo "Configuration Failed"
243 if "%NOBUILD%"=="1" goto EOF
246 %BUILD_DIR%\Blender.sln ^
248 /property:Configuration=%BUILD_TYPE% ^
251 /p:platform=%MSBUILD_PLATFORM% ^
252 /flp:Summary;Verbosity=minimal;LogFile=%BUILD_DIR%\Build.log
254 if %ERRORLEVEL% NEQ 0 (
260 %BUILD_DIR%\INSTALL.vcxproj ^
261 /property:Configuration=%BUILD_TYPE% ^
263 /p:platform=%MSBUILD_PLATFORM%
266 echo At any point you can optionally modify your build configuration by editing:
267 echo "%BUILD_DIR%\CMakeCache.txt", then run "make" again to build with the changes applied.
269 echo Blender successfully built, run from: "%BUILD_DIR%\bin\%BUILD_TYPE%\blender.exe"
274 echo Convenience targets
275 echo - release ^(identical to the official blender.org builds^)
276 echo - full ^(same as release minus the cuda kernels^)
282 echo Utilities ^(not associated with building^)
283 echo - clean ^(Target must be set^)
285 echo - nobuild ^(only generate project files^)
286 echo - showhash ^(Show git hashes of source tree^)
288 echo Configuration options
289 echo - with_tests ^(enable building unit tests^)
290 echo - debug ^(Build an unoptimized debuggable build^)
291 echo - packagename [newname] ^(override default cpack package name^)
292 echo - x86 ^(override host auto-detect and build 32 bit code^)
293 echo - x64 ^(override host auto-detect and build 64 bit code^)
294 echo - 2013 ^(build with visual studio 2013^)
295 echo - 2015 ^(build with visual studio 2015^) [EXPERIMENTAL]