From fcbe93c4c208d0fdc86ba533c8515db3a36d5554 Mon Sep 17 00:00:00 2001 From: Stinkfist0 Date: Mon, 23 Nov 2015 15:27:58 +0200 Subject: [PATCH] vs-cfg.cmd: support CMake pre-3.0 Visual Studio generator strings. --- win/vs-cfg.cmd | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/win/vs-cfg.cmd b/win/vs-cfg.cmd index c6e9b1fd53..bcc6f6b996 100644 --- a/win/vs-cfg.cmd +++ b/win/vs-cfg.cmd @@ -19,6 +19,10 @@ :: This script initializes various Visual Studio -related environment variables needed for building :: This batch file expects CMake generator as %1 and build configuration type as %2. +:: NOTE This batch file expects the generator string to be CMake 3.0.0 and newer format, i.e. +:: "Visual Studio 10 2010" instead of "Visual Studio 10". However, one can use this batch file +:: also with CMake 2 as the generator will be converted into the older format if necessary. + :: NOTE: The delayed environment variable expansion needs to be enabled before calling this. @echo off @@ -28,14 +32,9 @@ set GENERATOR=%1 :: TODO IDEA: Take more user-friendly VS generators and convert them to the CMake ones? :: F.ex. "vs2013-32" and/or "vc14-64" -:: TODO Print CMake and VS versions. Maybe in build-deps.cmd would be better than here. - :: Supported Visual Studio versions: set GENERATORS[0]="Visual Studio 14 2015" set GENERATORS[1]="Visual Studio 14 2015 Win64" -:: TODO Check CMake version and convert possible new format (>= 3.0) generator names -:: to the old versions if using older CMake for VS <= 2013, -:: see http://www.cmake.org/cmake/help/v3.0/release/3.0.0.html#other-changes set GENERATORS[2]="Visual Studio 12 2013" set GENERATORS[3]="Visual Studio 12 2013 Win64" set GENERATORS[4]="Visual Studio 11 2012" @@ -55,6 +54,10 @@ FOR /l %%i in (0,1,9) DO ( IF !GENERATOR!==!GENERATORS[%%i]! GOTO :GeneratorValid ) call utils\cecho.cmd 0 12 "%~nx0: Invalid or unsupported CMake generator string passed: '`"!GENERATOR!`'". Cannot proceed, aborting!" +echo Supported CMake generator strings: +FOR /l %%i in (0,1,9) DO ( + echo !GENERATORS[%%i]! +) exit /b 1 :GeneratorValid @@ -82,6 +85,18 @@ FOR %%i IN (%GENERATOR_SPLIT%) DO ( ) ) +:: Check CMake version and convert possible new format (>= 3.0) generator names to the old versions if using older CMake for VS <= 2013, +:: see http://www.cmake.org/cmake/help/v3.0/release/3.0.0.html#other-changes +FOR /f "delims=" %%i in ('where cmake') DO set CMAKE_PATH=%%i +IF NOT "%CMAKE_PATH%"=="" ( + FOR /f "delims=" %%i in ('cmake --version ^| findstr /C:"cmake version 3"') DO GOTO :CMake3AndNewer +) +:: CMake older than 3.0.0: convert new format generators to the old format (simple brute force for simplicity) +set GENERATOR=%GENERATOR: 2013=% +set GENERATOR=%GENERATOR: 2012=% +set GENERATOR=%GENERATOR: 2010=% +:CMake3AndNewer + :: VS project file extension is different on older VS versions set VCPROJ_FILE_EXT=vcxproj IF %VS_VER%==2008 set VCPROJ_FILE_EXT=vcproj