Exemplo real de script de build para Delphi
No último post da série sobre integração contínua com Hudson e Delphi, mostrei como criar um script para automatizar o build de projetos Delphi. Aqui vou mostrar um exemplo real, que utilizo para compilar meus componentes.
@echo off call "%D2010_ROOT%\bin\rsvars.bat" echo ****************************** echo *** Compilando componentes *** echo ****************************** msbuild Src\Componentes.dproj /p:config=Release if %ERRORLEVEL% neq 0 Exit /b 1 echo **************************************** echo *** Compilando pacote de design time *** echo **************************************** msbuild Src\ComponentesDsn.dproj /p:config=Release
Aqui não coloquei o caminho para o Delphi diretamente no script, ao invés disso eu faço referência através de uma variável de ambiente que eu criei, chamada D2010_ROOT. Na minha máquina, ela aponta para “C:\Arquivos de programas\Embarcadero\RAD Studio\7.0\”, sendo que eu posso rodar esse mesmo script em uma máquina com o Delphi instalado em outro caminho (Por exemplo, em um Windows em inglês, onde haverá “Program files” ao invés de “Arquivos de programas”), bastando ter a variável de ambiente declarada no Windows com o valor apropriado.
Isso abre espaço para uma recomendação: Nunca trabalhar com caminhos fixos nos projetos, pois isso pode eventualmente trazer problemas no projeto. Exemplo: Meus projetos Delphi estão todos localizados em “D:\Desenvolvimento\Delphi\Projetos\”, mas eu não posso ter esse caminho hard-coded dentro do meu projeto (mesmo que eu decida adotar o padrão de sempre trabalhar com essas pastas em qualquer máquina onde eu esteja) pois, por exemplo, isso me traria problemas com o Hudson (ele faz o check-out do projeto em uma pasta à escolha dele, ele não segue o seu padrão).


Eu gostaria de saber como fazer com o Delphi 2006. Não tenho o rsvars.bat na minha máquina, como usar o MSBUILD integrado com o HUDSON e o Delphi 2006??
Raphaela,
A integração do Delphi com o msbuild começou no Delphi 2007. No seu caso, você terá que executar diretamente o compilador de linha de comando do Delphi (dcc32).
Para maiores detalhes, veja a minha resposta ao comentario da Gisela em http://blog.magnomachado.com.br/?p=25, pois se trata do mesmo problema.