mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-12-24 00:28:38 -07:00
* Add script with VS version auto detection * Add msvc145 toolset support * Fix issue when build slicer only * Fix vs2026 OpenCV build * Set github action to use new build script * Get vs version from `msbuild --version` so it works for github action
119 lines
3.3 KiB
Batchfile
119 lines
3.3 KiB
Batchfile
@REM OrcaSlicer build script for Windows with VS auto-detect
|
|
@echo off
|
|
set WP=%CD%
|
|
|
|
@REM Detect Visual Studio version using msbuild
|
|
echo Detecting Visual Studio version using msbuild...
|
|
|
|
@REM Try to get MSBuild version - the output format varies by VS version
|
|
set VS_MAJOR=
|
|
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
|
|
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
|
|
set MSBUILD_OUTPUT=%%i
|
|
goto :version_found
|
|
)
|
|
|
|
@REM Alternative method for newer MSBuild versions
|
|
if "%VS_MAJOR%"=="" (
|
|
for /f "tokens=*" %%i in ('msbuild -version 2^>^&1 ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (
|
|
for /f "tokens=1 delims=." %%a in ("%%i") do set VS_MAJOR=%%a
|
|
set MSBUILD_OUTPUT=%%i
|
|
goto :version_found
|
|
)
|
|
)
|
|
|
|
:version_found
|
|
echo MSBuild version detected: %MSBUILD_OUTPUT%
|
|
echo Major version: %VS_MAJOR%
|
|
|
|
if "%VS_MAJOR%"=="" (
|
|
echo Error: Could not determine Visual Studio version from msbuild
|
|
echo Please ensure Visual Studio and MSBuild are properly installed
|
|
exit /b 1
|
|
)
|
|
|
|
if "%VS_MAJOR%"=="16" (
|
|
set VS_VERSION=2019
|
|
set CMAKE_GENERATOR="Visual Studio 16 2019"
|
|
) else if "%VS_MAJOR%"=="17" (
|
|
set VS_VERSION=2022
|
|
set CMAKE_GENERATOR="Visual Studio 17 2022"
|
|
) else if "%VS_MAJOR%"=="18" (
|
|
set VS_VERSION=2026
|
|
set CMAKE_GENERATOR="Visual Studio 18 2026"
|
|
) else (
|
|
echo Error: Unsupported Visual Studio version: %VS_MAJOR%
|
|
echo Supported versions: VS2019 (16.x^), VS2022 (17.x^), VS2026 (18.x^)
|
|
exit /b 1
|
|
)
|
|
|
|
echo Detected Visual Studio %VS_VERSION% (version %VS_MAJOR%)
|
|
echo Using CMake generator: %CMAKE_GENERATOR%
|
|
|
|
@REM Pack deps
|
|
if "%1"=="pack" (
|
|
setlocal ENABLEDELAYEDEXPANSION
|
|
cd %WP%/deps/build
|
|
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a
|
|
echo packing deps: OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip
|
|
|
|
%WP%/tools/7z.exe a OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep
|
|
exit /b 0
|
|
)
|
|
|
|
set debug=OFF
|
|
set debuginfo=OFF
|
|
if "%1"=="debug" set debug=ON
|
|
if "%2"=="debug" set debug=ON
|
|
if "%1"=="debuginfo" set debuginfo=ON
|
|
if "%2"=="debuginfo" set debuginfo=ON
|
|
if "%debug%"=="ON" (
|
|
set build_type=Debug
|
|
set build_dir=build-dbg
|
|
) else (
|
|
if "%debuginfo%"=="ON" (
|
|
set build_type=RelWithDebInfo
|
|
set build_dir=build-dbginfo
|
|
) else (
|
|
set build_type=Release
|
|
set build_dir=build
|
|
)
|
|
)
|
|
echo build type set to %build_type%
|
|
|
|
setlocal DISABLEDELAYEDEXPANSION
|
|
cd deps
|
|
mkdir %build_dir%
|
|
cd %build_dir%
|
|
set "SIG_FLAG="
|
|
if defined ORCA_UPDATER_SIG_KEY set "SIG_FLAG=-DORCA_UPDATER_SIG_KEY=%ORCA_UPDATER_SIG_KEY%"
|
|
|
|
if "%1"=="slicer" (
|
|
GOTO :slicer
|
|
)
|
|
echo "building deps.."
|
|
|
|
echo on
|
|
REM Set minimum CMake policy to avoid <3.5 errors
|
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
|
cmake ../ -G %CMAKE_GENERATOR% -A x64 -DCMAKE_BUILD_TYPE=%build_type%
|
|
cmake --build . --config %build_type% --target deps -- -m
|
|
@echo off
|
|
|
|
if "%1"=="deps" exit /b 0
|
|
|
|
:slicer
|
|
echo "building Orca Slicer..."
|
|
cd %WP%
|
|
mkdir %build_dir%
|
|
cd %build_dir%
|
|
|
|
echo on
|
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
|
cmake .. -G %CMAKE_GENERATOR% -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
|
|
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
|
@echo off
|
|
cd ..
|
|
call scripts/run_gettext.bat
|
|
cd %build_dir%
|
|
cmake --build . --target install --config %build_type%
|