buildwin.cmd 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. @echo off
  2. setlocal enableextensions enabledelayedexpansion
  3. rem
  4. rem buildwin.cmd
  5. rem
  6. rem POCO C++ Libraries command-line build script
  7. rem for MS Visual Studio 2015 to 2022
  8. rem
  9. rem Copyright (c) 2006-2020 by Applied Informatics Software Engineering GmbH
  10. rem and Contributors.
  11. rem
  12. rem Original version by Aleksandar Fabijanic.
  13. rem Modified by Guenter Obiltschnig.
  14. rem
  15. rem Usage:
  16. rem ------
  17. rem buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL] [ENV] [VERBOSITY [LOGGER] ]
  18. rem VS_VERSION: 140|150|160|170
  19. rem ACTION: build|rebuild|clean
  20. rem LINKMODE: static_mt|static_md|shared|all
  21. rem CONFIGURATION: release|debug|both
  22. rem PLATFORM: Win32|x64|ARM64
  23. rem SAMPLES: samples|nosamples
  24. rem TESTS: tests|notests
  25. rem TOOL: devenv|vcexpress|wdexpress|msbuild
  26. rem ENV: env|noenv (active only with msbuild, defaulted to env)
  27. rem VERBOSITY quiet|minimal|normal|detailed|diagnostic
  28. rem LOGGER <logger path> see msbuild /?
  29. rem
  30. rem VS_VERSION is required argument. Default is build all.
  31. set POCO_BASE=%CD%
  32. set PATH=%POCO_BASE%\bin64;%POCO_BASE%\bin;%PATH%
  33. rem VS_VERSION {140 | 150 | 160 | 170}
  34. if "%1"=="" goto usage
  35. rem -version ^^[16.0^^,17.0^^)
  36. rem should be set "VSWHERE='%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe -property installationPath -version ^[16.0^,17.0^)'"
  37. set VS_VERSION=vs%1
  38. if %VS_VERSION%==vs170 (
  39. set "VSWHERE='C:\PROGRA~2\"Microsoft Visual Studio"\Installer\vswhere.exe -latest -property installationPath -version ^[17.0^,18.0^)'"
  40. ) else (
  41. if %VS_VERSION%==vs160 (
  42. set "VSWHERE='C:\PROGRA~2\"Microsoft Visual Studio"\Installer\vswhere.exe -latest -property installationPath -version ^[16.0^,17.0^)'"
  43. ) else (
  44. if %VS_VERSION%==vs150 (
  45. set "VSWHERE='C:\PROGRA~2\"Microsoft Visual Studio"\Installer\vswhere.exe -latest -property installationPath -version ^[15.0^,16.0^)'"
  46. )
  47. )
  48. )
  49. for /f " delims=" %%a in (%VSWHERE%) do @set "VSCOMNTOOLS=%%a"
  50. echo ============= %VSCOMNTOOLS% =============
  51. if %VS_VERSION%==vs170 (
  52. set VS_VARSALL=..\..\VC\Auxiliary\Build\vcvarsall.bat
  53. set "VS170COMNTOOLS=%VSCOMNTOOLS%\Common7\Tools\"
  54. ) else (
  55. if %VS_VERSION%==vs160 (
  56. set VS_VARSALL=..\..\VC\Auxiliary\Build\vcvarsall.bat
  57. set "VS160COMNTOOLS=%VSCOMNTOOLS%\Common7\Tools\"
  58. ) else (
  59. if %VS_VERSION%==vs150 (
  60. set VS_VARSALL=..\..\VC\Auxiliary\Build\vcvarsall.bat
  61. set "VS150COMNTOOLS=%VSCOMNTOOLS%\Common7\Tools\"
  62. ) else (
  63. set VS_VARSALL=..\..\VC\vcvarsall.bat
  64. )
  65. )
  66. )
  67. shift /1
  68. rem ACTION [build|rebuild|clean]
  69. set ACTION=%1
  70. if "%ACTION%"=="" (set ACTION=build)
  71. if not "%ACTION%"=="build" (
  72. if not "%ACTION%"=="rebuild" (
  73. if not "%ACTION%"=="clean" goto usage))
  74. shift /1
  75. rem LINKMODE [static_mt|static_md|shared|all]
  76. set LINK_MODE=%1
  77. if "%LINK_MODE%"=="" (set LINK_MODE=all)
  78. if not "%LINK_MODE%"=="static_mt" (
  79. if not "%LINK_MODE%"=="static_md" (
  80. if not "%LINK_MODE%"=="shared" (
  81. if not "%LINK_MODE%"=="all" goto usage)))
  82. rem CONFIGURATION [release|debug|both]
  83. set CONFIGURATION=%2
  84. if "%CONFIGURATION%"=="" (set CONFIGURATION=both)
  85. if not "%CONFIGURATION%"=="release" (
  86. if not "%CONFIGURATION%"=="debug" (
  87. if not "%CONFIGURATION%"=="both" goto usage))
  88. rem PLATFORM [Win32|x64]
  89. set PLATFORM=%3
  90. if "%PLATFORM%"=="" (set PLATFORM=Win32)
  91. if not "%PLATFORM%"=="Win32" (
  92. if not "%PLATFORM%"=="x64" (
  93. if not "%PLATFORM%"=="ARM64" goto usage))
  94. rem SAMPLES [samples|nosamples]
  95. set SAMPLES=%4
  96. if "%SAMPLES%"=="" (set SAMPLES=samples)
  97. rem TESTS [tests|notests]
  98. set TESTS=%5
  99. if "%TESTS%"=="" (set TESTS=notests)
  100. if not defined VCINSTALLDIR (
  101. if %VS_VERSION%==vs140 (
  102. if %PLATFORM%==x64 (
  103. call "%VS140COMNTOOLS%%VS_VARSALL%" x86_amd64 8.1
  104. ) else (
  105. call "%VS140COMNTOOLS%%VS_VARSALL%" x86 8.1
  106. )
  107. ) else (
  108. if %VS_VERSION%==vs150 (
  109. if %PLATFORM%==x64 (
  110. call "%VS150COMNTOOLS%%VS_VARSALL%" x86_amd64 8.1
  111. ) else (
  112. call "%VS150COMNTOOLS%%VS_VARSALL%" x86 8.1
  113. )
  114. ) else (
  115. if %VS_VERSION%==vs160 (
  116. if %PLATFORM%==x64 (
  117. call "%VS160COMNTOOLS%%VS_VARSALL%" x86_amd64 8.1
  118. ) else (
  119. call "%VS160COMNTOOLS%%VS_VARSALL%" x86 8.1
  120. )
  121. ) else (
  122. if %VS_VERSION%==vs170 (
  123. if %PLATFORM%==x64 (
  124. call "%VS170COMNTOOLS%%VS_VARSALL%" x86_amd64
  125. ) else (
  126. if %PLATFORM%==arm64 (
  127. call "%VS170COMNTOOLS%%VS_VARSALL%" x86_arm64
  128. ) else (
  129. call "%VS170COMNTOOLS%%VS_VARSALL%" x86
  130. )
  131. )
  132. )
  133. )
  134. )
  135. )
  136. )
  137. if not defined VSINSTALLDIR (
  138. echo Error: No Visual C++ environment found.
  139. echo Please run this script from a Visual Studio Command Prompt
  140. echo or run "%%VSnnCOMNTOOLS%%\vsvars32.bat" first.
  141. goto :buildfailed
  142. )
  143. set VCPROJ_EXT=vcproj
  144. if %VS_VERSION%==vs140 (set VCPROJ_EXT=vcxproj)
  145. if %VS_VERSION%==vs150 (set VCPROJ_EXT=vcxproj)
  146. if %VS_VERSION%==vs160 (set VCPROJ_EXT=vcxproj)
  147. if %VS_VERSION%==vs170 (set VCPROJ_EXT=vcxproj)
  148. rem ENV env|noenv
  149. set USEENV=%7
  150. if "%USEENV%"=="" (set USEENV=env)
  151. if not "%USEENV%"=="env" (
  152. if not "%USEENV%"=="noenv" goto usage)
  153. rem VERBOSITY quiet|minimal|normal|detailed
  154. set VERBOSITY=%8
  155. if "%VERBOSITY%"=="" (set VERBOSITY=minimal)
  156. if not "%VERBOSITY%"=="quiet" (
  157. if not "%VERBOSITY%"=="minimal" (
  158. if not "%VERBOSITY%"=="normal" (
  159. if not "%VERBOSITY%"=="detailed" (
  160. if not "%VERBOSITY%"=="diagnostic" goto usage))))
  161. if "%6"=="" goto use_devenv
  162. set BUILD_TOOL=%6
  163. goto use_custom
  164. :use_devenv
  165. set BUILD_TOOL=devenv
  166. if "%VS_VERSION%"=="vs140" (set BUILD_TOOL=msbuild)
  167. if "%VS_VERSION%"=="vs150" (set BUILD_TOOL=msbuild)
  168. if "%VS_VERSION%"=="vs160" (set BUILD_TOOL=msbuild)
  169. if "%VS_VERSION%"=="vs170" (set BUILD_TOOL=msbuild)
  170. :use_custom
  171. if "%BUILD_TOOL%"=="msbuild" (
  172. if "%PLATFORM%"=="Win32" (set PLATFORMSW=/p:Platform=Win32) else (
  173. if "%PLATFORM%"=="x86" (set PLATFORMSW=/p:Platform=Win32) else (
  174. if "%PLATFORM%"=="x64" (set PLATFORMSW=/p:Platform=x64) else (
  175. if "%PLATFORM%"=="ARM64" (set PLATFORMSW=/p:Platform=ARM64))))
  176. set ACTIONSW=/t:
  177. set CONFIGSW=/p:Configuration=
  178. set EXTRASW=/m
  179. if "%USEENV%"=="env" set USEENVP=/p:UseEnv=true
  180. if "%USEENV%"=="noenv" set USEENVP=/p:UseEnv=false
  181. set BUILD_TOOL_FLAGS=/clp:NoSummary
  182. set BUILD_TOOL_FLAGS=!BUILD_TOOL_FLAGS! /nologo /v:%VERBOSITY%
  183. )
  184. if not "%BUILD_TOOL%"=="msbuild" (
  185. set USEENVP=/useenv
  186. set ACTIONSW=/
  187. )
  188. rem LOGGER <logger path> see msbuild /?
  189. set LOGGER=%9
  190. if not "%LOGGER%"=="" (
  191. if "%BUILD_TOOL%"=="msbuild" (
  192. if not %LOGGER%X==X (
  193. set BUILD_TOOL_FLAGS=!BUILD_TOOL_FLAGS! /logger:%LOGGER%
  194. )
  195. )
  196. )
  197. if "%VS_VERSION%"=="vs140" (goto msbuildok)
  198. if "%VS_VERSION%"=="vs150" (goto msbuildok)
  199. if "%VS_VERSION%"=="vs160" (goto msbuildok)
  200. if "%VS_VERSION%"=="vs170" (goto msbuildok)
  201. if "%BUILD_TOOL%"=="msbuild" (
  202. echo "Cannot use msbuild with Visual Studio 2013 or earlier."
  203. exit /b 2
  204. )
  205. :msbuildok
  206. set DEBUG_SHARED=0
  207. set RELEASE_SHARED=0
  208. set DEBUG_STATIC_MT=0
  209. set RELEASE_STATIC_MT=0
  210. set DEBUG_STATIC_MD=0
  211. set RELEASE_STATIC_MD=0
  212. if %LINK_MODE%==shared (
  213. if %CONFIGURATION%==release (set RELEASE_SHARED=1) else (
  214. if %CONFIGURATION%==both (set RELEASE_SHARED=1) else (
  215. if "%CONFIGURATION%"=="" (set RELEASE_SHARED=1))))
  216. if %LINK_MODE%==shared (
  217. if %CONFIGURATION%==debug (set DEBUG_SHARED=1) else (
  218. if %CONFIGURATION%==both (set DEBUG_SHARED=1) else (
  219. if "%CONFIGURATION%"=="" (set DEBUG_SHARED=1))))
  220. if %LINK_MODE%==static_mt (
  221. if %CONFIGURATION%==release (set RELEASE_STATIC_MT=1) else (
  222. if %CONFIGURATION%==both (set RELEASE_STATIC_MT=1) else (
  223. if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MT=1))))
  224. if %LINK_MODE%==static_md (
  225. if %CONFIGURATION%==release (set RELEASE_STATIC_MD=1) else (
  226. if %CONFIGURATION%==both (set RELEASE_STATIC_MD=1) else (
  227. if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MD=1))))
  228. if %LINK_MODE%==static_mt (
  229. if %CONFIGURATION%==debug (set DEBUG_STATIC_MT=1) else (
  230. if %CONFIGURATION%==both (set DEBUG_STATIC_MT=1) else (
  231. if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MT=1))))
  232. if %LINK_MODE%==static_md (
  233. if %CONFIGURATION%==debug (set DEBUG_STATIC_MD=1) else (
  234. if %CONFIGURATION%==both (set DEBUG_STATIC_MD=1) else (
  235. if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MD=1))))
  236. if %LINK_MODE%==all (
  237. if %CONFIGURATION%==debug (
  238. set DEBUG_STATIC_MT=1
  239. set DEBUG_STATIC_MD=1
  240. set DEBUG_SHARED=1) else (
  241. if %CONFIGURATION%==release (
  242. set RELEASE_STATIC_MT=1
  243. set RELEASE_STATIC_MD=1
  244. set RELEASE_SHARED=1) else (
  245. if %CONFIGURATION%==both (
  246. set DEBUG_STATIC_MT=1
  247. set DEBUG_STATIC_MD=1
  248. set DEBUG_SHARED=1
  249. set RELEASE_STATIC_MT=1
  250. set RELEASE_STATIC_MD=1
  251. set RELEASE_SHARED=1) else (
  252. if "%CONFIGURATION%"=="" (
  253. set DEBUG_STATIC_MT=1
  254. set DEBUG_STATIC_MD=1
  255. set DEBUG_SHARED=1
  256. set RELEASE_STATIC_MT=1
  257. set RELEASE_STATIC_MD=1
  258. set RELEASE_SHARED=1)))))
  259. if "%LINK_MODE%"=="" (
  260. if %CONFIGURATION%==debug (
  261. set DEBUG_STATIC_MT=1
  262. set DEBUG_STATIC_MD=1
  263. set DEBUG_SHARED=1) else (
  264. if %CONFIGURATION%==release (
  265. set RELEASE_STATIC_MT=1
  266. set RELEASE_STATIC_MD=1
  267. set RELEASE_SHARED=1) else (
  268. if %CONFIGURATION%==both (
  269. set DEBUG_STATIC_MT=1
  270. set DEBUG_STATIC_MD=1
  271. set DEBUG_SHARED=1
  272. set RELEASE_STATIC_MT=1
  273. set RELEASE_STATIC_MD=1
  274. set RELEASE_SHARED=1) else (
  275. if "%CONFIGURATION%"=="" (
  276. set DEBUG_STATIC_MT=1
  277. set DEBUG_STATIC_MD=1
  278. set DEBUG_SHARED=1
  279. set RELEASE_STATIC_MT=1
  280. set RELEASE_STATIC_MD=1
  281. set RELEASE_SHARED=1)))))
  282. echo.
  283. echo.
  284. echo ########################################################################
  285. echo ####
  286. echo #### STARTING VISUAL STUDIO BUILD (%VS_VERSION%, %PLATFORM%)
  287. echo ####
  288. echo ########################################################################
  289. echo.
  290. echo.
  291. echo buildwin %VS_VERSION% %ACTION% %LINK_MODE% %CONFIGURATION% %PLATFORM% %SAMPLES% %TESTS% !BUILD_TOOL! %USEENV% %VERBOSITY%
  292. echo.
  293. echo The following configurations will be built:
  294. if %DEBUG_SHARED%==1 (echo debug_shared)
  295. if %RELEASE_SHARED%==1 (echo release_shared)
  296. if %DEBUG_STATIC_MT%==1 (echo debug_static_mt)
  297. if %DEBUG_STATIC_MD%==1 (echo debug_static_md)
  298. if %RELEASE_STATIC_MT%==1 (echo release_static_mt)
  299. if %RELEASE_STATIC_MD%==1 (echo release_static_md)
  300. rem build for up to 4 levels deep
  301. for /f %%G in ('findstr /R "." components') do (
  302. if exist %%G (
  303. cd %%G
  304. for /f "tokens=1,2,3,4 delims=/" %%Q in ("%%G") do (
  305. set PROJECT_FILE=%%Q_%VS_VERSION%.%VCPROJ_EXT%
  306. set TEST_PROJECT_FILE=testsuite/TestSuite_%VS_VERSION%.%VCPROJ_EXT%
  307. set TEST_APP_PROJECT_FILE=testsuite/TestApp_%VS_VERSION%.%VCPROJ_EXT%
  308. set TEST_LIB_PROJECT_FILE=testsuite/TestLibrary_%VS_VERSION%.%VCPROJ_EXT%
  309. if exist !PROJECT_FILE! (
  310. call :build %%G
  311. if ERRORLEVEL 1 goto buildfailed
  312. )
  313. set PROJECT_FILE=%%R_%VS_VERSION%.%VCPROJ_EXT%
  314. if exist !PROJECT_FILE! (
  315. call :build %%G
  316. if ERRORLEVEL 1 goto buildfailed
  317. )
  318. set PROJECT_FILE=%%S_%VS_VERSION%.%VCPROJ_EXT%
  319. if exist !PROJECT_FILE! (
  320. call :build %%G
  321. if ERRORLEVEL 1 goto buildfailed
  322. )
  323. set PROJECT_FILE=%%T_%VS_VERSION%.%VCPROJ_EXT%
  324. if exist !PROJECT_FILE! (
  325. call :build %%G
  326. if ERRORLEVEL 1 goto buildfailed
  327. )
  328. )
  329. )
  330. cd "%POCO_BASE%"
  331. )
  332. goto samples
  333. rem ////////////////////
  334. rem / build subroutine /
  335. rem ////////////////////
  336. :build
  337. echo.
  338. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  339. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  340. echo ++++ Building [!PROJECT_FILE!]
  341. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  342. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  343. echo.
  344. if %DEBUG_SHARED%==1 (
  345. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !PROJECT_FILE!
  346. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !PROJECT_FILE!
  347. if ERRORLEVEL 1 exit /b 1
  348. echo. && echo.
  349. if %TESTS%==tests (
  350. if exist !TEST_PROJECT_FILE! (
  351. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !TEST_PROJECT_FILE!
  352. if ERRORLEVEL 1 exit /b 1
  353. if %1==Foundation (
  354. echo.
  355. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  356. echo.
  357. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !TEST_LIB_PROJECT_FILE!
  358. if ERRORLEVEL 1 exit /b 1
  359. )
  360. echo. && echo.
  361. )
  362. )
  363. )
  364. if %RELEASE_SHARED%==1 (
  365. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !PROJECT_FILE!
  366. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !PROJECT_FILE!
  367. if ERRORLEVEL 1 exit /b 1
  368. echo. && echo.
  369. if %TESTS%==tests (
  370. if exist !TEST_PROJECT_FILE! (
  371. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !TEST_PROJECT_FILE!
  372. if ERRORLEVEL 1 exit /b 1
  373. if %1==Foundation (
  374. echo.
  375. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  376. echo.
  377. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !TEST_LIB_PROJECT_FILE!
  378. if ERRORLEVEL 1 exit /b 1
  379. )
  380. echo. && echo.
  381. )
  382. )
  383. )
  384. if %DEBUG_STATIC_MT%==1 (
  385. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt %PLATFORMSW% !PROJECT_FILE!
  386. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt %PLATFORMSW% !PROJECT_FILE!
  387. if ERRORLEVEL 1 exit /b 1
  388. echo. && echo.
  389. if %TESTS%==tests (
  390. if exist !TEST_PROJECT_FILE! (
  391. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt %PLATFORMSW% !TEST_PROJECT_FILE!
  392. if ERRORLEVEL 1 exit /b 1
  393. if %1==Foundation (
  394. echo.
  395. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  396. if ERRORLEVEL 1 exit /b 1
  397. )
  398. echo. && echo.
  399. )
  400. )
  401. )
  402. if %RELEASE_STATIC_MT%==1 (
  403. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt %PLATFORMSW% !PROJECT_FILE!
  404. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt %PLATFORMSW% !PROJECT_FILE!
  405. if ERRORLEVEL 1 exit /b 1
  406. echo. && echo.
  407. if %TESTS%==tests (
  408. if exist !TEST_PROJECT_FILE! (
  409. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt %PLATFORMSW% !TEST_PROJECT_FILE!
  410. if ERRORLEVEL 1 exit /b 1
  411. if %1==Foundation (
  412. echo.
  413. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  414. if ERRORLEVEL 1 exit /b 1
  415. )
  416. echo. && echo.
  417. )
  418. )
  419. )
  420. if %DEBUG_STATIC_MD%==1 (
  421. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md %PLATFORMSW% !PROJECT_FILE!
  422. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md %PLATFORMSW% !PROJECT_FILE!
  423. if ERRORLEVEL 1 exit /b 1
  424. echo. && echo.
  425. if %TESTS%==tests (
  426. if exist !TEST_PROJECT_FILE! (
  427. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md %PLATFORMSW% !TEST_PROJECT_FILE!
  428. if ERRORLEVEL 1 exit /b 1
  429. if %1==Foundation (
  430. echo.
  431. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  432. if ERRORLEVEL 1 exit /b 1
  433. )
  434. echo. && echo.
  435. )
  436. )
  437. )
  438. if %RELEASE_STATIC_MD%==1 (
  439. echo !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md %PLATFORMSW% !PROJECT_FILE!
  440. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md %PLATFORMSW% !PROJECT_FILE!
  441. if ERRORLEVEL 1 exit /b 1
  442. echo. && echo.
  443. if %TESTS%==tests (
  444. if exist !TEST_PROJECT_FILE! (
  445. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md %PLATFORMSW% !TEST_PROJECT_FILE!
  446. if ERRORLEVEL 1 exit /b 1
  447. if %1==Foundation (
  448. echo.
  449. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md %PLATFORMSW% !TEST_APP_PROJECT_FILE!
  450. if ERRORLEVEL 1 exit /b 1
  451. )
  452. echo. && echo.
  453. )
  454. )
  455. )
  456. echo.
  457. echo ------------------------------------------------------------------------
  458. echo ------------------------------------------------------------------------
  459. echo ---- Done building [!PROJECT_FILE!]
  460. echo ------------------------------------------------------------------------
  461. echo ------------------------------------------------------------------------
  462. echo.
  463. exit /b
  464. rem ////////////////////
  465. rem / build samples /
  466. rem ////////////////////
  467. :samples
  468. if %SAMPLES%==nosamples goto :EOF
  469. rem root level component samples
  470. for /f %%G in ('findstr /R "." components') do (
  471. if exist %%G\samples\samples_%VS_VERSION%.sln (
  472. cd %%G\samples
  473. echo.
  474. echo.
  475. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  476. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  477. echo ++++ Building [%%G/samples]
  478. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  479. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  480. echo.
  481. set SOLUTION_FILE=samples_%VS_VERSION%.sln
  482. if %DEBUG_SHARED%==1 (
  483. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared %PLATFORMSW% !SOLUTION_FILE!
  484. if ERRORLEVEL 1 goto buildfailed
  485. echo. && echo.
  486. )
  487. if %RELEASE_SHARED%==1 (
  488. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared %PLATFORMSW% !SOLUTION_FILE!
  489. if ERRORLEVEL 1 goto buildfailed
  490. echo. && echo.
  491. )
  492. if %DEBUG_STATIC_MT%==1 (
  493. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt %PLATFORMSW% !SOLUTION_FILE!
  494. if ERRORLEVEL 1 goto buildfailed
  495. echo. && echo.
  496. )
  497. if %RELEASE_STATIC_MT%==1 (
  498. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt %PLATFORMSW% !SOLUTION_FILE!
  499. if ERRORLEVEL 1 goto buildfailed
  500. echo. && echo.
  501. )
  502. if %DEBUG_STATIC_MD%==1 (
  503. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md %PLATFORMSW% !SOLUTION_FILE!
  504. if ERRORLEVEL 1 goto buildfailed
  505. echo. && echo.
  506. )
  507. if %RELEASE_STATIC_MD%==1 (
  508. !BUILD_TOOL! !BUILD_TOOL_FLAGS! !USEENVP! %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md %PLATFORMSW% !SOLUTION_FILE!
  509. if ERRORLEVEL 1 goto buildfailed
  510. echo. && echo.
  511. )
  512. cd "%POCO_BASE%"
  513. echo.
  514. echo ------------------------------------------------------------------------
  515. echo ------------------------------------------------------------------------
  516. echo ---- Done building [%%G/samples]
  517. echo ------------------------------------------------------------------------
  518. echo ------------------------------------------------------------------------
  519. echo.
  520. )
  521. )
  522. echo.
  523. echo ------------------------------------------------------------------------
  524. echo ------------------------------------------------------------------------
  525. echo ---- Build completed.
  526. echo ------------------------------------------------------------------------
  527. echo ------------------------------------------------------------------------
  528. echo.
  529. goto :EOF
  530. rem ////////////////
  531. rem / build failed /
  532. rem ////////////////
  533. :buildfailed
  534. echo.
  535. echo.
  536. echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  537. echo XXX BUILD FAILED. EXITING. XXX
  538. echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  539. echo.
  540. echo.
  541. exit /b 1
  542. :usage
  543. echo Usage:
  544. echo ------
  545. echo buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL] [ENV] [VERBOSITY]
  546. echo VS_VERSION: "140|150|160|170"
  547. echo ACTION: "build|rebuild|clean"
  548. echo LINKMODE: "static_mt|static_md|shared|all"
  549. echo CONFIGURATION: "release|debug|both"
  550. echo PLATFORM: "Win32|x64|ARM64"
  551. echo SAMPLES: "samples|nosamples"
  552. echo TESTS: "tests|notests"
  553. echo TOOL: "devenv|vcexpress|wdexpress|msbuild"
  554. echo ENV: "env|noenv" (active only with msbuild, defaulted to env)
  555. echo VERBOSITY: "quiet|minimal|normal|detailed|diagnostic" only for msbuild
  556. echo.
  557. echo Default is build all.
  558. endlocal