2009-05-22 9 views

risposta

8

Per vedere quali IDE è doind, controllare

Strumenti | Opzioni | Opzioni ambientali | Compilazione ed esecuzione | Mostra riga di comando

E puoi controllare i messaggi del compilatore.

10

La forza principale della costruzione dalla riga di comando del compilatore Delphi è standardizzazione - a identificare in modo esplicito le opzioni (sulla riga di comando, nei file .cfg, ecc), e il compilatore segue le opzioni fornite esclusivamente. Al contrario, l'IDE ha molti altri comportamenti che non sono chiari ed espliciti - per esempio, può cercare percorsi della libreria non specificati nelle Opzioni progetto. La mia ipotesi è che qualcosa stia accadendo nella build IDE di cui non si è completamente consapevoli - e questo è il motivo per cui le build standardizzate sono fatte dalla riga di comando.

0

Questo comportamento è presente in ogni versione di Delphi che ho usato. (5 - 2006). Non mi preoccuperei molto di questo. Quando l'ho scoperto per la prima volta ho passato un sacco di tempo a cercare di risolvere la differenza. Ho perso una bandiera del compilatore? C'è una discrepanza tra l'IDE e le opzioni supportate dal compilatore della riga di comando?

Alla fine ho deciso che non era un grosso problema. Entrambi producevano in modo coerente eseguibili equivalenti dal punto di vista funzionale.

0

Se si forniscono esattamente gli stessi parametri al compilatore della riga di comando, gli eseguibili prodotti saranno praticamente identici.

Infatti, l'IDE chiama semplicemente il compilatore della riga di comando. Compila il tuo progetto nell'IDE e guarda la finestra dei messaggi. vedrai la chiamata dcc32.exe completa ...

+1

In che modo questo aiuta l'OP a fare effettivamente quel rifornimento, però? –

+0

Aiuta a fare in modo che/possa/controlli il tuo strumento di compilazione (Steve ha menzionato MSBuild nella sua domanda) per compilare * esattamente * nello stesso modo in cui lo fai dall'ID di Delphi. –

3

La prima risposta sull'uso della riga di comando per la consistenza della build è corretta ed è probabilmente qualcosa di cui non devi preoccuparti se ti stai affidando a un sistema di compilazione dove i file di produzione provengono sempre dalle build della console.

D'altra parte, se vuoi veramente capire cosa sta succedendo, devi attivare i file di mappe (a livello di dettaglio completo) e confrontarli/differirli. Se ci sono differenze tra i due, essi verranno mostrati lì. Eventuali altre differenze che possono esistere sono probabilmente il risultato di un'opzione di riga di comando diversa (come un flag condizionale che può essere impostato nelle impostazioni IDE).

+0

+1 per consigli sui file di mappe. Sembrano avere molto meno attenzione ora, ma sono ancora molto validi per sapere cosa viene effettivamente utilizzato dall'applicazione. – skamradt

Problemi correlati