:: Requires 1 parameter == GENERATOR @echo off setlocal :: Set path set "BUILD_BASE_DIR=%~dp0" :: Use the directory where the script is located set "CMAKELIST_DIR=..\..\cmake" if "%~1"=="" ( echo No generator specified as first parameter exit /b 1 ) set "GENERATOR=%~1" :: Check if a user-defined CMAKE_PATH is set and prioritize it if defined CMAKE_PATH ( set "CMAKE_EXECUTABLE=%CMAKE_PATH%\cmake.exe" echo Using user-defined cmake at %CMAKE_PATH% ) else ( :: Attempt to find cmake in the system PATH where cmake >nul 2>&1 if %ERRORLEVEL% neq 0 ( :: Use the default standard cmake installation directory if not found in PATH set "CMAKE_PATH=C:\Program Files\CMake\bin" echo CMake not in system PATH => using default CMAKE_PATH=%CMAKE_PATH% set "CMAKE_EXECUTABLE=%CMAKE_PATH%\cmake.exe" ) else ( set "CMAKE_EXECUTABLE=cmake" echo CMake found in system PATH. ) ) :: Set the build directory to a subdirectory named after the generator set "BUILD_DIR=%BUILD_BASE_DIR%\%GENERATOR%" :: Create the build directory if it doesn't exist if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%" :: Run CMake to configure the project and generate the solution pushd "%BUILD_DIR%" "%CMAKE_EXECUTABLE%" -G "%GENERATOR%" "%CMAKELIST_DIR%" if %ERRORLEVEL% neq 0 goto :error :: If successful, end script echo Build configuration successful for %GENERATOR%. goto :end :error echo Failed to configure build for %GENERATOR%. exit /b 1 :end popd endlocal @echo on