Delphi 7 fazer queixa arquivos não encontrados
Pergunta
Eu tenho um arquivo BPG que eu tenho modificado para usar como um arquivo make para servidor de compilação automatizada da nossa empresa. A fim de fazê-lo funcionar eu tive que mudar
Uses * Uses unit1 in 'unit1.pas' * unit1 unit2 in 'unit2.pas' * unit2 ... * ...
no arquivo DPR para obtê-lo a trabalhar sem o compilador me dar algum disparate sobre Unit1.pas não encontradas. Isso é chato porque eu quero usar um arquivo BPG para realmente ver as coisas no meu projeto e cada vez que adicionar uma nova unidade, auto-macacos que em 'unitx.pas' em meu arquivo DPR.
Estou correndo make -f [then some options]
, o DPR é que eu estou a compilar não estão no mesmo diretório que o arquivo marca, mas não estou certo de que isso é importante. Tudo compila bem, enquanto o in 'unit1.pas
é removido.
Solução
Ele poderia vir do fato de que o caminho de busca no IDE e o caminho de pesquisa do compilador de linha de comando não são os mesmos. Se você alterar o caminho serach do compilador linha de comando que você pode ser capaz de usar o exactely mesmo código-fonte como dentro do IDE.
Uma possibilidade para configurar o caminho de pesquisa para o compilador de linha de comando é fazê-lo em um arquivo chamado dcc32.cfg. Dê uma olhada a ajuda, há uma breve descrição de dcc32.cfg no IDE-ajuda.
Outras dicas
Bem, esta solução alternativa trabalhou para mim.
//{$define PACKAGE} {$ifdef PACKAGE} uses unit1 in 'unit1.pas' unit2 in 'unit2.pas' ... {$else} uses unit1 unit2 ... {$endif}
O único problema é sempre que você adicionar uma nova unidade, delphi apaga o seu ifdef package
no topo.
Toda vez que eu tenho que colocar condicionais em um arquivo de projeto que eu faça o seguinte:
program a;
uses
ACondUnits;
...
unit ACondUnits;
interface
uses
{$IFDEF UseD7MM}
Delphi7MM;
{$ELSE}
FastMM4;
{$ENDIF}
implementation
end.
Talvez este truque funciona em pacotes também. Nunca tentou.