Keil uVision4 (MDK-ARM) ile bir yapı sunucusunu nasıl kullanabilirim, bir yapıya komut verebilir, bir makefile kullanabilirim?


13

Günlük derlemeler veya Keil MDK-ARM tabanlı projelerin check-in / taahhüt tetiklenmiş derlemelerini çalıştırmak istiyorum. Şimdiye kadar IDE'nin toplu dosya özelliği ile ilgili şeyler aldım. Bu, projeyi IDE ile en az bir kez oluşturmanızı, ardından toplu iş dosyasını ve ilişkili .__ive ._iaIDE tarafından oluşturulan dosyaları kontrol etmenizi gerektirir .

Ayrıca, IDE toplu iş dosyasına Windows PATH değişkeni gibi kullanıcıya özel birçok şey koyar. Bu, birden çok geliştirici için bir sorun haline gelebilir, çünkü bina için toplu iş dosyası farklı bir geliştiricinin her işleminde değiştirilebilir.

Sonuçta, sadece armcc , armasm ve ArmLink için çeşitli anahtarları takip etmek gerekir .

Keil uVision projeleri oluşturmak için daha standart bir makefile kullanmanın bir yolu var mı? Bir uVision proje dosyasını daha sürdürülebilir bir yapı betiğine çevirmenin bir yöntemi var mı?


Ben bir yapı sunucusu uygulamak harika olduğunu düşünüyorum. Ne yazık ki, Keil geliştirme sistemi ile ilgili hiçbir deneyimim yok, bu yüzden size gerçekten yardımcı olamıyorum. Eğer çözdüğünüzde bir çözüm göndermenizi tavsiye ederim.
semaj

Herhangi bir PATH bağımlılığı (Keil araçlarının kendileri dışında) veya __i / _ia dosyaları olmadan toplu komut dosyası ile Keil projeleri inşa ediyorum. Bu konuda daha fazla bilgi paylaşabilir misiniz?
Digikata

1
@digikata Bir toplu iş dosyası oluşturmak için IDE içinden seçeneği kullanıyorum. Bu Keil'in belgelerinde açıklanmaktadır . Ayrıca komut satırı ile çalışan bir yöntem de açıklanmıştır var , ancak bu komuttan uygun konsol çıktısını almakta zorluk çekiyordum. İkinci yöntem yeni bir işlem başlatır ve size çıkış penceresini bir çıkış dosyasına kopyalama seçeneği sunar - bir yapı sunucusu için iyi bir yöntem değildir.
rmaVT

İleride başvurmak üzere bu sorunun kapsamı, diğer Stack Exchange siteleriyle paylaştığımız bir çakışma alanındadır. Keil gibi gömülü araçlara ilişkin sorular kesinlikle burada! Ayrıca Stack Overflow'a da hoş geldiniz , ancak her iki yerde de sormaya çekinmeyin.
Kevin Vermeer

1
@KevinVermeer - Evet, aynı şeyi kendim söylemek üzereydim. rmaVT, SO üzerinde "keil" etiketli soruları tarama gibi EE SE "keil" etiketli soruları gibi eğitim bulabilirsiniz .
davidcary

Yanıtlar:


8

Bu son zamanlarda geldim en iyi yöntemdir:

Derleme seçeneklerinde, toplu iş dosyası oluştur'u seçin.

IDE'den bir yapı başlattığınızda, IDE'de ayarlanan seçeneklere bağlı olarak birkaç metin dosyasıyla birlikte bir toplu iş dosyası oluşturulur. Bu IDE tarafından oluşturulan dosyaları kaynak denetiminde izlemeniz gerekir:

  • * .bat
  • * ini
  • *.__ben
  • * ._ ia
  • * .lnp
  • * .sct

Daha sonra foo.bat bir yapı komut dosyasından başlatılabilir.

Oluşturulan toplu iş dosyasından güvenilir bir şekilde oluşturmak istiyorsanız, kaynak denetiminde izlenmesi gereken ek dosyalar oluştururken, Keil proje dosyasına (foo.uvproj) ve IDE'ye güvenme gereğini ortadan kaldırır. Farklılıkları karşılaştırmak ve böylece değişiklikleri, derleyici bayrakları içeren oluşturulan metin dosyaları (* .__ i) .uvproj dosyasına göre daha kolay buluyorum. Ayrıca, toplu iş dosyası doğrudan çeşitli araçları, silahlandırma, armcc, armlink'i çağırır. Bu, bu adımların her birinin doğrudan çıktısının yanı sıra, gerekirse bir projeyi gelecekte farklı bir takım zincirine geçirme gibi görünen daha iyi bir potansiyel sağlar.

Bu cevabın orijinal soruma çok benzediğini anlıyorum, ama Keil'in araçlarıyla senaryolu bir yapı çalıştırmanın daha iyi bir yolunu bilmiyorum. Başkalarından neler geleceğini görmek istedim. @Digikata'nın cevabına tamamen katılmıyorum, ancak derleme bayraklarına ve bellek haritasına izleme için daha kolay bir formatta sahip olmayı ve hepsi bir arada bir derleme başlatmak yerine derleme için daha fazla unix tarzı araçlar kullanmayı tercih ediyorum. IDE ile. Ben IDE all-in-one derleme iş istasyonunda iyi çalışıyor, ama yapı sunucusu için düşünüyorum.

DÜZENLEME : Yapı sunucusu Windows Server 2003 üzerinde çalışır. Bir toplu iş dosyası yerine IDE komut satırı arabirimini kullanmakla ilgili olduğunu itiraf etmeliyim. Bunu yönetmek artık çok zor oldu.


Bu çalışma hakkında bir soru - derleme sunucunuz hangi işletim sistemini çalıştırıyor? Linux, Windows 7, Windows Server 2003, Windows Server 2008?
CrimsonX

Soruyu cevapladığınız için teşekkürler! Arm toolchain, Keil'in Belgeleri başına Windows Server 2003 ve 2008 R2'de çalışıyor gibi görünüyor . Düzenlemenizle ilgili bir takip sorusu: uvproj dosyasındaki değişiklikleri nasıl ele alıyorsunuz (örn. Derleme için projeye yeni dosyalar ekleme)? Derleme sunucusuna yükseltilmiş bir dosyadaki derleme seçeneklerini el ile değiştirmeniz mi gerekiyor?
CrimsonX

.Uvproj dosyasını kaynak denetimi altına almanız gerekir. Bazı kullanıcı tercihleri ​​yine de oluşturulan .userxxxxx dosyasına rağmen dosyada kalmasına rağmen, bu oldukça iyi çalışıyor. Derleme sunucusunun aynı "projeyi" açması ve derlemesi yeterlidir.
rmaVT

3

Ben bir Makefile içinde oluşturmak için (oluşturulan bir toplu iş dosyası değil) komut satırı üzerinden Keil IDE çağırır. Genellikle proje dosyalarını scm yoluyla kilitlemek veya bunu yaparken ilgili proje adlarını yeniden adlandıran bir referans derleme kopyası almak daha iyidir.

IDE salt okunur proje dosyalarıyla çalışmaktan mutluluk duyar, bu yüzden onları kilitlerseniz, tahriş edici, ayarları değiştirmek, kaydetmek ve tekrar kontrol etmek için bunların kilidini açmanız gerektiğidir. projede bu oldukça küçük - hatta arzu edilir.

Referans bir kopya alırsanız, proje ayarları değiştikçe derleme bozulma eğilimi gösterir - özellikle proje dosyaları derlemeye eklendiğinde veya derlendiğinde. Bu değişiklikleri açıkça yakalamak her zaman kötü değildir, ancak yapıları korumak için ek bir adım gereklidir.

Her iki durumda da, çıktıyı "-o" seçeneği ile bir günlük dosyasına yeniden yönlendirmek, tam çıktı günlüğüne erişmenizi sağlar. Kütük her seferinde bir çizgi çıkmaz, ama hepsi orada gibi görünüyor. (Aslında tutulma CDT ortamı ile entegrasyon için Keil hata formatını GNU fmt olarak ayrıştırıyorum. Bu, derlemeden sonra doğrudan hatalara / uyarılara atlamama izin veriyor)

Komut satırı derlemesi de __i, __ia dosyalarını oluşturur, böylece bunların derleme sunucusu için sürüm denetimine girmeleri gerekmez.

Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.