-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild_x64_release.bat
96 lines (84 loc) · 2.01 KB
/
build_x64_release.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
@echo off & setlocal enabledelayedexpansion
::projejct meta
set dir_binary=x64\Release
set app_name=ThingsToDo
set src_ext=.c
set app_std=/std:c17
set dir_build=build
set dir_project=ThingsToDo
set dir_src=%dir_project%\src
::project directories
set dir_paths=res src\winapi
::include paths
for %%a in (%dir_paths%) do (
set cur=%%a
set INCLUDE_PATHS=!INCLUDE_PATHS! /I %dir_project%\!cur!
)
::flags
set COMPILE_FLAGS=^
/D NDEBUG ^
/D _WINDOWS ^
/W3 ^
/WX- ^
/EHsc ^
/MD ^
/O2 ^
/Oi ^
/Gs ^
/Gm- ^
/Gy ^
/fp:precise ^
%app_std% ^
/Fd:%dir_build%\vc140.pdb
set LINK_FLAGS=^
/SUBSYSTEM:WINDOWS ^
/MACHINE:X64 ^
/DYNAMICBASE ^
/ERRORREPORT:PROMPT ^
/NOLOGO
set LIB_FILES=^
Comctl32.lib ^
Shlwapi.lib ^
kernel32.lib ^
user32.lib ^
gdi32.lib ^
winspool.lib ^
comdlg32.lib ^
advapi32.lib ^
shell32.lib ^
ole32.lib ^
oleaut32.lib ^
uuid.lib ^
odbc32.lib ^
odbccp32.lib
set MANIFEST=^
/MANIFEST ^
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" ^
/manifest:embed ^
/manifestinput:%dir_project%\res\ThingsToDo.exe.manifest
::source files
set SOURCE_FILES=/Fo.\%dir_build%\ /c
for /r %cd%\%dir_src% %%f in (*.c) do (
set cur=%%f
set src_cur=!cur:%cd%\=!
set obj_cur=%%~nxf
set obj_cur=%dir_build%\!obj_cur:%src_ext%=.obj!
set OBJECT_FILES=!OBJECT_FILES! !obj_cur!
set SOURCE_FILES=!SOURCE_FILES! !src_cur!
)
::resources
for /r %cd%\%dir_project%\res %%f in (*.rc) do (
set cur=%%f
set rc_cur=!cur:%cd%\=!
set rc_file_cur=%%~nxf
set rc_file_cur=%dir_build%\!rc_file_cur:.rc=.res!
set RES_FILES=!RES_FILES! !rc_file_cur!
set RESOURCES=!RESOURCES! /fo.\!rc_file_cur! !rc_cur!
)
::create build directory
if not exist %dir_build% mkdir %dir_build%
::build
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
cl /nologo /Zi %COMPILE_FLAGS% %INCLUDE_PATHS% %SOURCE_FILES%
rc /D _UNICODE /D UNICODE /l"0x0409" %INCLUDE_PATHS% /nologo %RESOURCES%
link /OUT:%dir_binary%\%app_name%.exe %LINK_FLAGS% %LIB_FILES% %MANIFEST% %OBJECT_FILES:~1% %RES_FILES:~1%