Questo è il metodo migliore che ho escogitato di recente:
Nelle opzioni di generazione, selezionare Crea file batch.
Quando si avvia una build dall'IDE, viene creato un file batch insieme a diversi file di testo in base alle opzioni impostate nell'IDE. È necessario tenere traccia di questi file generati dall'IDE nel controllo del codice sorgente:
- * .bat
- * .ini
- *.__io
- * ._ ia
- * .lnp
- * .sct
Quindi foo.bat può essere avviato da uno script di build.
Sebbene ciò crei file extra che devono essere monitorati nel controllo del codice sorgente se si desidera compilare in modo affidabile dal file batch generato, rimuove la necessità di fare affidamento sul file di progetto Keil (foo.uvproj) e sull'IDE. Trovo più facile confrontare le differenze e quindi tenere traccia delle modifiche ai file di testo generati (* .__ i) che contengono flag del compilatore rispetto al file .uvproj. Inoltre, il file batch chiama direttamente i vari strumenti, armasm, armcc, armlink. Ciò fornisce l'output diretto di ciascuno di questi passaggi, nonché un potenziale apparentemente migliore per la migrazione di un progetto in una catena di strumenti diversa in futuro, se necessario.
Mi rendo conto che questa risposta assomiglia molto alla mia domanda originale, ma sinceramente non conosco un modo migliore di eseguire una build con script con gli strumenti di Keil. Ho chiesto di vedere cosa potrebbe venire fuori dagli altri. Non sono completamente in disaccordo con la risposta di @digikata, ma preferisco avere i flag del compilatore e la mappa di memoria in un formato più semplice per il tracciamento e utilizzare più strumenti in stile unix per la compilazione piuttosto che lanciare una compilation all-in-one con l'IDE. Penso che la compilazione all-in-one dell'IDE funzioni bene sulla mia workstation, ma non per il server di build.
EDIT : il server di build funziona su Windows Server 2003. Devo confessare di aver rinunciato a utilizzare l'interfaccia della riga di comando IDE anziché un file batch. Questo è diventato troppo difficile da gestire.