1.符号定义:
set symbol=%1
set put=%2
set resource=%3
symbol:为执行批处理获取的第一个参数,这里定义为符号
put:为执行批处理获取的第二个参数,这里定义为文件名(输入文件名时,不要输入后缀)
resource:为执行批处理获取的第三个参数,这里定义为资源文件(输入资源文件名时,不要输入后缀):可选
2.make里面所定义的符号
if "%symbol%"=="_bit16" (goto :bit16)
if "%symbol%"=="_bit32" (goto :bit32)
if "%symbol%"=="_win32" (goto :win32)
if "%symbol%"=="_dll" (goto :dll)
_bit16为16位编译环境
_bit32为32控制台编译执行环境
_win32为32位窗口编译环境
_dll为编译库文件
3.自动编译文件
其中%put%:为第二个参数文件名,输入第二个参数时,不要带后缀名
_bit16符号:
:bit16
ML /c /nologo /Fl /Fr /Zi %put%.asm
if errorlevel 1 goto terminate
LINK /CODEVIEW %put%,,NUL,Irvine16;
if errorlevel 1 goto terminate
goto :exit
执行结果:
_bit32符号:
:bit32
ML /c /coff /Fl /Fr /Fm /Zi %put%.asm
if errorlevel 1 goto terminate
LINK32 /SUBSYSTEM:CONSOLE /MAP %put%.obj
if errorLevel 1 goto terminate
goto :exit
执行结果:
_win32符号:
这是第一种情况:如果有带.rc资源文件,和主模块同名,可以使用主模块的文件名就可以了
这是第二种情况:如果有带.rc或.res资源文件,不和主模块同名的可以使用第三个参数,来输入资源
:win32
ML /c /coff /Fl /Fr /Fm /Zi %put%.asm
if errorlevel 1 goto terminate
if exist %put%.rc (goto :win)
if exist %resource%.rc (goto :win_rc)
if exist %resource%.res (goto :win_res)
LINK32 /SUBSYSTEM:WINDOWS /MAP %put%.obj
if errorLevel 1 goto terminate
goto :exit
:win_rc
RC %resource%.rc
:win_res
LINK32 /SUBSYSTEM:WINDOWS /MAP %put%.obj %resource%.res
if errorLevel 1 goto terminate
goto :exit
:win
RC %put%.rc
LINK32 /SUBSYSTEM:WINDOWS /MAP %put%.obj %put%.res
if errorLevel 1 goto terminate
goto :exit