检查其中一个bat参数中是否出现-f
,以便我可以在.bat中执行不同的操作。
案例1:
用户来电
umake
在umake.bat内部,我将执行
make -f Makefile.umk
案例2:
用户来电
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.umk
附加为make
的额外参数。谢谢。
答案 0 :(得分: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
是必须的。因为:如果%1
的值为"big cat"
,则%~1
会将其设为big cat
,以便我们可以使用引号覆盖%~1
。