Я пытаюсь запустить два cmd-файла из события post-build проекта Delphi 2007.Можно ли вызвать несколько событий после сборки в Delphi 2007?
Построенные события настроены так:
..\..\buildtools\postbuild.cmd $(OUTPUTDIR)$(OUTPUTNAME)
..\copydlls.cmd $(OUTPUTDIR)
Первый из них работает отлично, второй, кажется, никогда не дозвонились вообще.
Если изменить порядок так:
..\copydlls.cmd $(OUTPUTDIR)
..\..\buildtools\postbuild.cmd $(OUTPUTDIR)$(OUTPUTNAME)
Опять же, только первый из них выполняется.
Является ли это известным ограничением/ошибкой Delphi 2007 или я что-то не так здесь делаю? (я мог бы поклясться, что это используется для работы в прошлом.)
EDIT: Я нашел обходной путь:
%comspec% /c ..\..\buildtools\postbuild.cmd $(OUTPUTDIR)$(OUTPUTNAME)
%comspec% /c ..\copydlls.cmd $(OUTPUTDIR)
Это работает, как ожидалось. Все еще странно.
EDIT2: Существует еще один вариант, я нашел в this ответ на StackOverflow:
call ..\..\buildtools\postbuild.cmd $(OUTPUTDIR)$(OUTPUTNAME)
call ..\copydlls.cmd $(OUTPUTDIR)
Я думаю (не попробовав его), то есть это проблема, только если событие сборки является CMD-файл и предыдущий опыт, который я привел выше, не называл cmd-файлы, а исполняемые файлы.
Это означает, что события сборки выполняются как пакетная программа. Это где-то документировано? – dummzeuch
Я не уверен, что он задокументирован. Я знаю, что он так смотрел CMD.Процессы exe мерцают в жизнь как подпроцессы bds.exe в дереве дерева процесса. Но я не могу найти документы, которые утверждают это. Во всяком случае, это хороший момент, который вы делаете, и я принял это как должное в своем ответе. Я исправил это сейчас. –