nmake では set は CMD.EXE ではなく、nmake 自身の組み込みコマンドらしい
test: set foo=ahaha echo %%foo%%
% は nmake用の Makefile ではファイル指定子であるため、2つ重ねなくてはいけない ※
$ nmake Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. set foo=ahaha echo %foo% ahaha
二重引用符の扱いについて、CMD.EXE との互換性はない
test: set "foo=ahaha" echo %%foo%% echo %%"foo%%
$ nmake Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. set "foo=ahaha" echo %foo% %foo% echo %"foo% ahaha"
CMD.EXE の set を呼ぶには丸括弧で囲めば良い
test1: set GOOS=linux & go env GOOS test2: ( set "GOOS=linux" & go env GOOS )
$ nmake test1 Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. set GOOS=linux & go env GOOS $ nmake test2 Microsoft (R) Program Maintenance Utility Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. ( set "GOOS=linux" & go env GOOS ) linux