@@ -6,52 +6,70 @@ REM GET VERSION FROM GIT TAG
66REM ================================
77for /f %%v in ('git describe --tags --abbrev^ =0') do set VERSION = %%v
88
9- echo Building version %VERSION%
9+ echo Raw version from git: %VERSION%
1010
11- REM Convert x.y.z or x.y.z.w → x,y,z,w
12- for /f " tokens=1-4 delims=." %%a in (" %VERSION% " ) do (
11+ REM Strip leading "v" if present
12+ set VERSION_RAW = %VERSION%
13+ if " %VERSION_RAW:~0 ,1 % " == " v" set VERSION_RAW = %VERSION_RAW:~1 %
14+
15+ echo Using version: %VERSION_RAW%
16+
17+ REM ================================
18+ REM PARSE VERSION INTO NUMERIC FORM
19+ REM ================================
20+ for /f " tokens=1-4 delims=." %%a in (" %VERSION_RAW% " ) do (
1321 set MAJOR = %%a
1422 set MINOR = %%b
1523 set PATCH = %%c
1624 set BUILD = %%d
1725)
1826
1927if " %BUILD% " == " " set BUILD = 0
28+
2029set VERSION_NUMERIC = %MAJOR% ,%MINOR% ,%PATCH% ,%BUILD%
2130
2231echo Numeric version: %VERSION_NUMERIC%
2332
2433REM ================================
25- REM LOCATE MSBUILD
34+ REM GENERATE version.h
2635REM ================================
27- for /f " tokens=2,*" %%a in ('reg query " HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0" /v MSBuildToolsPath 2^ > nul ') do (
28- set MSBUILDPATH = %%b
29- )
36+ echo #pragma once> version.h
37+ echo #define VER_FILEVERSION %VERSION_NUMERIC% >> version.h
38+ echo #define VER_FILEVERSION_STR " %VERSION_RAW% " >> version.h
39+ echo #define VER_PRODUCTVERSION %VERSION_NUMERIC% >> version.h
40+ echo #define VER_PRODUCTVERSION_STR " %VERSION_RAW% " >> version.h
3041
31- if not exist " %MSBUILDPATH% msbuild.exe" (
32- for /f " usebackq tokens=*" %%i in (`" %ProgramFiles(x86)% \Microsoft Visual Studio\Installer\vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe" `) do (
33- set MSBUILDPATH = %%i
34- )
42+ echo Generated version.h:
43+ type version.h
44+
45+ REM ================================
46+ REM LOCATE MSBUILD.EXE (C++-capable)
47+ REM ================================
48+ set MSBUILD_EXE =
49+
50+ for /f " usebackq tokens=*" %%i in (`
51+ " %ProgramFiles(x86)% \Microsoft Visual Studio\Installer\vswhere.exe" ^
52+ -latest -requires Microsoft.Component.MSBuild ^
53+ -find MSBuild\**\Bin\MSBuild.exe
54+ `) do (
55+ set MSBUILD_EXE = %%i
3556)
3657
37- if not exist " %MSBUILDPATH% " (
38- echo ERROR: MSBuild not found.
58+ if " %MSBUILD_EXE% " == " " (
59+ echo ERROR: C++-capable MSBuild.exe not found.
3960 exit /b 1
4061)
4162
42- echo Using MSBuild: %MSBUILDPATH%
63+ echo Using MSBuild: %MSBUILD_EXE%
64+
4365
4466REM ================================
4567REM BUILD
4668REM ================================
47- " %MSBUILDPATH % " ColorCop.sln ^
69+ " %MSBUILD_EXE % " ColorCop.sln ^
4870 /t:Rebuild ^
4971 /p:Configuration=Release ^
5072 /p:Platform=Win32 ^
51- /p:ProductVersion=%VERSION% ^
52- /p:FileVersion=%VERSION% ^
53- /p:NumericVersion=%VERSION_NUMERIC% ^
5473 /m
5574
5675exit /b %errorlevel%
57-
0 commit comments