Я написал небольшой скрипт Python wrapcl.py
, который упаковывает двоичный код нашего компилятора (cl.exe
, компилятор Microsoft Visual Studio C ++).Затем я создал новый пакетный файл cl.bat
, который делает этот скрипт Python доступным, чтобы я мог запустить cl
, как и раньше, и он будет беззвучно вызывать мой скрипт-обертку вместо реальной программы.Что бы это ни стоило, вот мой cl.bat
командный файл:
@python %~dp0\wrapcl.py %*
Это работает довольно хорошо - за исключением одного случая:
У нас есть существующие сценарии, которые делают что-то вроде
cl >NUL 2>&1 && GOTO CL
, чтобы определить, доступен ли компилятор Microsoft Visual Studio C ++.Это прерывается, если cl
фактически вызывает мой cl.bat
пакетный файл, так как вызов cl.bat
никогда не возвращается.Для этого нам нужно было бы использовать call cl >NUL ...
.
Можно ли как-нибудь сделать так, чтобы мой wrapcl.py
Python-скрипт выглядел так же, как cl.exe
для вызывающих, чтобы я мог не касаться наших существующих скриптов, которые ожидаютcl && foo
на работу?