0

H 大家好。我打算编写一个执行以下操作的批处理(umake.bat)文件:

检查是否-f出现在 bat 参数之一中,以便我可以在 .bat 中执行不同的操作。

情况1:

用户调用

umake 

在 umake.bat 我将执行

make -f Makefile.umk

案例二:

用户调用

umake debug=1 var="big cat"

在 umake.bat 我将执行

make debug=1 var="big cat" -f Makefile.umk

案例 3:

用户调用

umake -f special.mk debug=1

在 umake.bat 我将执行

make -f special.mk debug=1

案例 4:

用户调用

umake debug=1 -f

在 umake.bat 我将执行

make debug=1 -f

在第 4 种情况下,make(GNU make) 将不会成功,因为-f. 为简单起见,我不必关心这个,因为这是用户的错,问题将由 GNU make 报告。

概括:

  • 如果用户-f xxx在命令参数中提供,我会将这些参数传递给make.
  • 如果用户不提供-f xxx,我将make使用所有用户的参数以及附加-f Makefile.umkasmake的额外参数进行调用。

谢谢你。

4

1 回答 1

0

我似乎找到了解决方案,尽管代码很冗长。

@echo off

set _F_MAKEFILE=-f Makefile.umk

:CHECK_PARAM_AGAIN
if "%~1" == "" (
  goto CHECK_PARAM_DONE
) else (
  if "%~1" == "-f" (
    set _F_MAKEFILE=
    goto CHECK_PARAM_DONE
  )
  rem echo @@@%1
  shift
)
goto CHECK_PARAM_AGAIN

:CHECK_PARAM_DONE

@echo on
make %* %_F_MAKEFILE%

笔记:

  • 使用%~1是必须的。因为: If %1has value "big cat", make %~1it big cat,所以我们可以%~1用引号括起来。
于 2012-08-06T07:15:51.443 回答