Saya ingin menjalankan build harian, atau check-in / commit builded trigger dari proyek berbasis Keil MDK-ARM. Sejauh ini saya sudah mendapatkan banyak hal dengan fitur file batch dari IDE. Ini mengharuskan Anda untuk membangun proyek setidaknya sekali dengan IDE, kemudian check-in file batch dan terkait .__i
dan ._ia
file yang dibuat oleh IDE.
Selain itu, IDE menempatkan banyak hal khusus pengguna ke dalam file batch seperti variabel Windows PATH. Ini bisa menjadi masalah dengan beberapa pengembang, karena file kumpulan untuk bangunan dapat diubah pada setiap komit dari pengembang yang berbeda.
Pada akhirnya, kita hanya perlu melacak berbagai sakelar untuk armcc , armasm , dan ArmLink .
Apakah ada cara untuk menggunakan makefile yang lebih standar untuk membangun proyek uVision Keil? Apakah ada metode menerjemahkan file proyek uVision ke dalam skrip build yang lebih dapat dikelola?
Jawaban:
Ini adalah metode terbaik yang saya buat baru-baru ini:
Dalam opsi pembuatan, pilih buat file batch.
Ketika Anda memulai membangun dari IDE, file batch bersama dengan beberapa file teks dibuat berdasarkan opsi yang diatur dalam IDE. Anda perlu melacak file yang dihasilkan IDE ini dalam kontrol sumber:
Kemudian foo.bat dapat diluncurkan dari skrip build.
Meskipun ini membuat file tambahan yang perlu dilacak dalam kontrol sumber jika Anda ingin membangun dengan andal dari file batch yang dihasilkan, itu menghapus kebutuhan untuk bergantung pada file proyek Keil (foo.uvproj) dan IDE. Saya merasa lebih mudah untuk membandingkan perbedaan, dan dengan demikian melacak perubahan, ke file teks yang dihasilkan (* .__ i) yang berisi flag kompiler daripada file .uvproj. Selain itu, file batch memanggil berbagai alat, armasm, armcc, armlink, secara langsung. Ini memberi Anda hasil langsung dari setiap langkah tersebut serta potensi yang tampaknya lebih baik untuk memigrasi proyek ke rantai alat yang berbeda di masa depan jika perlu.
Saya menyadari jawaban ini sangat mirip dengan pertanyaan awal saya, tetapi saya benar-benar tidak tahu cara yang lebih baik untuk menjalankan pembuatan skrip dengan alat Keil. Saya bertanya untuk melihat apa yang mungkin muncul dari orang lain. Saya tidak sepenuhnya tidak setuju dengan jawaban dari @digikata, tetapi saya lebih suka memiliki flag kompiler dan peta memori dalam format yang lebih mudah untuk dilacak dan menggunakan lebih banyak alat unix-style untuk kompilasi daripada meluncurkan kompilasi all-in-one dengan IDE. Saya pikir kompilasi all-in-one dari IDE bekerja dengan baik di workstation saya, tetapi tidak untuk server build.
EDIT : Server build berjalan pada Windows Server 2003. Saya harus mengakui bahwa saya telah mengalah untuk menggunakan antarmuka baris perintah IDE daripada file batch. Ini menjadi terlalu sulit untuk dikelola.
sumber
Saya memanggil IDE Keil melalui baris perintah untuk membangun (bukan file batch yang dihasilkan) dari dalam Makefile. Biasanya ini bekerja lebih baik untuk mengunci file proyek melalui SCM, atau mengambil salinan referensi membangun mengganti nama nama proyek yang relevan ketika melakukan ini.
IDE sangat senang bekerja dengan file proyek read-only, jadi jika Anda menguncinya, yang menjengkelkan adalah Anda harus membuka kuncinya untuk mengubah pengaturan, menyimpan, dan memeriksanya kembali. Jika Anda cukup stabil titik dalam proyek ini cukup kecil - bahkan diinginkan.
Jika Anda mengambil salinan referensi, maka bangunan cenderung rusak ketika pengaturan proyek berubah - terutama karena file proyek ditambahkan atau dihapus dari kompilasi. Menangkap perubahan tersebut secara jelas tidak selalu buruk, tetapi merupakan langkah ekstra yang diperlukan untuk mempertahankan build.
Either way, mengarahkan output ke file log melalui opsi "-o" memungkinkan Anda mengakses log output penuh. Log tidak keluar satu baris pada satu waktu, tetapi tampaknya semua ada di sana. (Saya sebenarnya mem-parsing format kesalahan Keil ke GNU fmt untuk diintegrasikan dengan lingkungan gerhana CDT. Ini memungkinkan saya langsung beralih ke kesalahan / peringatan setelah pembuatan)
Membangun baris perintah juga menghasilkan file __i, __ia sehingga mereka tidak perlu masuk ke kontrol versi untuk server build.
Semoga ini membantu.
sumber