123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- @echo off
- REM This batch file does an out-of-source CMake build in ../build_windows
- REM This is for users who like to configure & build Blender with a single command.
- setlocal EnableDelayedExpansion
- setlocal ENABLEEXTENSIONS
- set BLENDER_DIR=%~dp0
- set BLENDER_DIR_NOSPACES=%BLENDER_DIR: =%
- if not "%BLENDER_DIR%"=="%BLENDER_DIR_NOSPACES%" (
- echo There are spaces detected in the build path "%BLENDER_DIR%", this is currently not supported, exiting....
- goto EOF
- )
- set BUILD_DIR=%BLENDER_DIR%..\build_windows
- set BUILD_TYPE=Release
- rem reset all variables so they do not get accidentally get carried over from previous builds
- set BUILD_DIR_OVERRRIDE=
- set BUILD_CMAKE_ARGS=
- set BUILD_ARCH=
- set BUILD_VS_VER=
- set BUILD_VS_YEAR=
- set BUILD_NGE=
- set KEY_NAME=
- set MSBUILD_PLATFORM=
- set MUST_CLEAN=
- set NOBUILD=
- set TARGET=
- set WINDOWS_ARCH=
- set TESTS_CMAKE_ARGS=
- :argv_loop
- if NOT "%1" == "" (
- REM Help Message
- if "%1" == "help" (
- goto HELP
- )
- REM Build Types
- if "%1" == "debug" (
- set BUILD_TYPE=Debug
- REM Build Configurations
- ) else if "%1" == "noge" (
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DWITH_GAMEENGINE=OFF -DWITH_PLAYER=OFF
- set BUILD_NGE=_noge
- ) else if "%1" == "builddir" (
- set BUILD_DIR_OVERRRIDE="%BLENDER_DIR%..\%2"
- shift /1
- ) else if "%1" == "with_tests" (
- set TESTS_CMAKE_ARGS=-DWITH_GTESTS=On
- ) else if "%1" == "full" (
- set TARGET=Full
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\blender_full.cmake"
- ) else if "%1" == "lite" (
- set TARGET=Lite
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\blender_lite.cmake"
- ) else if "%1" == "cycles" (
- set TARGET=Cycles
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\cycles_standalone.cmake"
- ) else if "%1" == "headless" (
- set TARGET=Headless
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\blender_headless.cmake"
- ) else if "%1" == "bpy" (
- set TARGET=Bpy
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\bpy_module.cmake"
- ) else if "%1" == "release" (
- set TARGET=Release
- ) else if "%1" == "x86" (
- set BUILD_ARCH=x86
- ) else if "%1" == "x64" (
- set BUILD_ARCH=x64
- ) else if "%1" == "2017" (
- set BUILD_VS_VER=15
- set BUILD_VS_YEAR=2017
- ) else if "%1" == "2015" (
- set BUILD_VS_VER=14
- set BUILD_VS_YEAR=2015
- ) else if "%1" == "2013" (
- set BUILD_VS_VER=12
- set BUILD_VS_YEAR=2013
- ) else if "%1" == "packagename" (
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DCPACK_OVERRIDE_PACKAGENAME="%2"
- shift /1
- ) else if "%1" == "nobuild" (
- set NOBUILD=1
- ) else if "%1" == "showhash" (
- for /f "delims=" %%i in ('git rev-parse HEAD') do echo Branch_hash=%%i
- cd release/datafiles/locale
- for /f "delims=" %%i in ('git rev-parse HEAD') do echo Locale_hash=%%i
- cd %~dp0
- cd release/scripts/addons
- for /f "delims=" %%i in ('git rev-parse HEAD') do echo Addons_Hash=%%i
- cd %~dp0
- goto EOF
- REM Non-Build Commands
- ) else if "%1" == "update" (
- svn up ../lib/*
- git pull --rebase
- git submodule foreach git pull --rebase origin master
- goto EOF
- ) else if "%1" == "clean" (
- set MUST_CLEAN=1
- ) else (
- echo Command "%1" unknown, aborting!
- goto EOF
- )
- shift /1
- goto argv_loop
- )
- if "%BUILD_ARCH%"=="" (
- if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
- set WINDOWS_ARCH= Win64
- set BUILD_ARCH=x64
- ) else if "%PROCESSOR_ARCHITEW6432%" == "AMD64" (
- set WINDOWS_ARCH= Win64
- set BUILD_ARCH=x64
- ) else (
- set WINDOWS_ARCH=
- set BUILD_ARCH=x86
- )
- ) else if "%BUILD_ARCH%"=="x64" (
- set WINDOWS_ARCH= Win64
- ) else if "%BUILD_ARCH%"=="x86" (
- set WINDOWS_ARCH=
- )
- if "%BUILD_VS_VER%"=="" (
- set BUILD_VS_VER=12
- set BUILD_VS_YEAR=2013
- )
- if "%BUILD_ARCH%"=="x64" (
- set MSBUILD_PLATFORM=x64
- ) else if "%BUILD_ARCH%"=="x86" (
- set MSBUILD_PLATFORM=win32
- )
- if "%target%"=="Release" (
- rem for vc12 check for both cuda 7.5 and 8
- if "%CUDA_PATH%"=="" (
- echo Cuda Not found, aborting!
- goto EOF
- )
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% ^
- -C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake"
- )
- :DetectMSVC
- REM Detect MSVC Installation for 2013-2015
- if DEFINED VisualStudioVersion goto msvc_detect_finally
- set VALUE_NAME=ProductDir
- REM Check 64 bits
- set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%BUILD_VS_VER%.0\Setup\VC"
- 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
- if DEFINED MSVC_VC_DIR goto msvc_detect_finally
- REM Check 32 bits
- set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\%BUILD_VS_VER%.0\Setup\VC"
- 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
- if DEFINED MSVC_VC_DIR goto msvc_detect_finally
- :msvc_detect_finally
- if DEFINED MSVC_VC_DIR call "%MSVC_VC_DIR%\vcvarsall.bat"
- if DEFINED MSVC_VC_DIR goto sanity_checks
- rem MSVC Build environment 2017 and up.
- 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
- if DEFINED MSVC_VS_DIR goto msvc_detect_finally_2017
- REM Check 32 bits
- 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
- if DEFINED MSVC_VS_DIR goto msvc_detect_finally_2017
- :msvc_detect_finally_2017
- if DEFINED MSVC_VS_DIR call "%MSVC_VS_DIR%\Common7\Tools\VsDevCmd.bat"
- :sanity_checks
- REM Sanity Checks
- where /Q msbuild
- if %ERRORLEVEL% NEQ 0 (
- if "%BUILD_VS_VER%"=="12" (
- rem vs12 not found, try vs14
- echo Visual Studio 2013 not found, trying Visual Studio 2015.
- set BUILD_VS_VER=14
- set BUILD_VS_YEAR=2015
- goto DetectMSVC
- ) else (
- echo Error: "MSBuild" command not in the PATH.
- echo You must have MSVC installed and run this from the "Developer Command Prompt"
- echo ^(available from Visual Studio's Start menu entry^), aborting!
- goto EOF
- )
- )
- set BUILD_DIR=%BUILD_DIR%_%TARGET%%BUILD_NGE%_%BUILD_ARCH%_vc%BUILD_VS_VER%_%BUILD_TYPE%
- if NOT "%BUILD_DIR_OVERRRIDE%"=="" (
- set BUILD_DIR=%BUILD_DIR_OVERRRIDE%
- )
- where /Q cmake
- if %ERRORLEVEL% NEQ 0 (
- echo Error: "CMake" command not in the PATH.
- echo You must have CMake installed and added to your PATH, aborting!
- goto EOF
- )
- if NOT EXIST %BLENDER_DIR%..\lib\nul (
- echo Error: Path to libraries not found "%BLENDER_DIR%..\lib\"
- echo This is needed for building, aborting!
- goto EOF
- )
- if "%TARGET%"=="" (
- echo Error: Convenience target not set
- echo This is required for building, aborting!
- echo .
- goto HELP
- )
- set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS%
- if NOT EXIST %BUILD_DIR%\nul (
- mkdir %BUILD_DIR%
- )
- if "%MUST_CLEAN%"=="1" (
- echo Cleaning %BUILD_DIR%
- msbuild ^
- %BUILD_DIR%\Blender.sln ^
- /target:clean ^
- /property:Configuration=%BUILD_TYPE% ^
- /verbosity:minimal ^
- /p:platform=%MSBUILD_PLATFORM%
- if %ERRORLEVEL% NEQ 0 (
- echo Cleaned "%BUILD_DIR%"
- )
- goto EOF
- )
- REM Only configure on first run or when called with nobuild
- if NOT EXIST %BUILD_DIR%\Blender.sln set MUST_CONFIGURE=1
- if "%NOBUILD%"=="1" set MUST_CONFIGURE=1
- if "%MUST_CONFIGURE%"=="1" (
- cmake ^
- %BUILD_CMAKE_ARGS% ^
- -H%BLENDER_DIR% ^
- -B%BUILD_DIR% ^
- %BUILD_CMAKE_ARGS%
- if %ERRORLEVEL% NEQ 0 (
- echo "Configuration Failed"
- goto EOF
- )
- )
- if DEFINED MSVC_VC_DIR echo call "%MSVC_VC_DIR%\vcvarsall.bat" > %BUILD_DIR%\rebuild.cmd
- if DEFINED MSVC_VS_DIR echo call "%MSVC_VS_DIR%\Common7\Tools\VsDevCmd.bat" > %BUILD_DIR%\rebuild.cmd
- echo cmake . >> %BUILD_DIR%\rebuild.cmd
- echo msbuild ^
- %BUILD_DIR%\Blender.sln ^
- /target:build ^
- /property:Configuration=%BUILD_TYPE% ^
- /maxcpucount:2 ^
- /verbosity:minimal ^
- /p:platform=%MSBUILD_PLATFORM% ^
- /flp:Summary;Verbosity=minimal;LogFile=%BUILD_DIR%\Build.log >> %BUILD_DIR%\rebuild.cmd
- echo msbuild ^
- %BUILD_DIR%\INSTALL.vcxproj ^
- /property:Configuration=%BUILD_TYPE% ^
- /verbosity:minimal ^
- /p:platform=%MSBUILD_PLATFORM% >> %BUILD_DIR%\rebuild.cmd
- if "%NOBUILD%"=="1" goto EOF
- msbuild ^
- %BUILD_DIR%\Blender.sln ^
- /target:build ^
- /property:Configuration=%BUILD_TYPE% ^
- /maxcpucount:2 ^
- /verbosity:minimal ^
- /p:platform=%MSBUILD_PLATFORM% ^
- /flp:Summary;Verbosity=minimal;LogFile=%BUILD_DIR%\Build.log
- if %ERRORLEVEL% NEQ 0 (
- echo "Build Failed"
- goto EOF
- )
- msbuild ^
- %BUILD_DIR%\INSTALL.vcxproj ^
- /property:Configuration=%BUILD_TYPE% ^
- /verbosity:minimal ^
- /p:platform=%MSBUILD_PLATFORM%
- echo.
- echo At any point you can optionally modify your build configuration by editing:
- echo "%BUILD_DIR%\CMakeCache.txt", then run "rebuild.cmd" in the build folder to build with the changes applied.
- echo.
- echo Blender successfully built, run from: "%BUILD_DIR%\bin\%BUILD_TYPE%\blender.exe"
- echo.
- goto EOF
- :HELP
- echo.
- echo Convenience targets
- echo - release ^(identical to the official blender.org builds^)
- echo - full ^(same as release minus the cuda kernels^)
- echo - lite
- echo - headless
- echo - cycles
- echo - bpy
- echo.
- echo Utilities ^(not associated with building^)
- echo - clean ^(Target must be set^)
- echo - update
- echo - nobuild ^(only generate project files^)
- echo - showhash ^(Show git hashes of source tree^)
- echo.
- echo Configuration options
- echo - with_tests ^(enable building unit tests^)
- echo - noge ^(disable building game enginge and player^)
- echo - debug ^(Build an unoptimized debuggable build^)
- echo - packagename [newname] ^(override default cpack package name^)
- echo - buildir [newdir] ^(override default build folder^)
- echo - x86 ^(override host auto-detect and build 32 bit code^)
- echo - x64 ^(override host auto-detect and build 64 bit code^)
- echo - 2013 ^(build with visual studio 2013^)
- echo - 2015 ^(build with visual studio 2015^) [EXPERIMENTAL]
- echo.
- :EOF
|