С Perl можно окружить данные, которые Вы хотите с () и вытаскиваете его позже, возможно, другие языки имеют подобную функцию.
if ($s_output =~ /(data data data data START(data data data)END (data data)/)
{
$dataAllOfIt = $1; # 1 full string
$dataInMiddle = $2; # 2 Middle Data
$dataAtEnd = $3; # 3 End Data
}
Я считаю, что это / t: rebuild , в выводе msbuild указано «Удаление файла: ...» для всех dcu, затем выполняется сборка проекта.
I используйте командный файл для вызова msbuild для сборки проектов delphi для Delphi 2007 и Delphi 2009 (у которого просто другой путь для % BDS%
):
set DCC_Quiet=true
set BDS=%ProgramFiles%\CodeGear\RAD Studio\5.0
set MSBuildBinPath=%WinDir%\Microsoft.NET\Framework\v2.0.50727
call %MSBuildBinPath%\msbuild /nologo /t:rebuild /p:config=Release %1 %2 %3 %4 %5
[Примечание, из этого вопроса , для выпуска «Конфигурация сборки» Delphi 2009 - это / p: config = Release
, а Delphi 2007 - / p: Configuration = Выпуск
]
Как я помню, в D7 была аналогичная проблема, когда GUI и dcc32 производили разные сборки. Взгляните на расположение и содержимое вашего файла (ов) dcc32.cfg. На самом деле они могут содержать столько условных выражений, сколько вам нужно. Одно условие на строку
Думаю, вопрос Delphi MSBuild Build Configuraions From Command Line содержит ответ. Попробуйте
msbuild /target:Build
Другой вариант - удалить DCU скомпилированных модулей после завершения вашей первой сборки и перед запуском следующей.