call :"%~1"
のように、ラベル名を二重引用符で囲むと、サブコマンド名が渡されなかった時も処理できます( :""
というラベルとなるから)
以下は、nmake.exe も mingw32-make.exe もない環境で、簡易Makefileとして make.cmd というバッチファイルを作った例。
-
make
,make all
,make package
,make upgrade
などのように呼び出せる。 - ファイルの新旧比較は go コマンドがやってくれるので、本当の make がなくても簡易的なものであればバッチファイルで用が足りますね。
setlocal
call :"%~1"
endlocal
exit /b
:""
:"all"
go fmt
for %%I in (386 amd64) do (
set GOARCH=%%I
if not exist cmd\%%I mkdir cmd\%%I
go build -o cmd\%%I\findo.exe -ldflags "-s -w"
)
exit /b
:"package"
for %%I in (386 amd64) do zip -j findo-%%I-%DATE:/=%.zip cmd\%%I\findo.exe
exit /b
:"upgrade"
for /F %%I in ('where findo') do copy /-Y findo.exe "%%I"
exit /b