Keil Lib

Başlatan SpeedyX, 22 Ağustos 2012, 14:43:33

SpeedyX

Merhabalar,

Keil de bir çok C dosyasından ve bunları gruplandırdığım 5 klasörden oluşan bir projem var. Klasörlerden birinde 10 tane C dostası ve kendi h ları var.

Bu klasördeki kodları .lib olarak ayrıca derleyip, daha sonra projemden bu C dosyalarını tamemen silip sadece .lib dosyasını eklemek ve bu şekilde çalıştırmak istiyorum.

Bunu en kısa yoldan nasıl yapabilirim?

controller

Proje yapısına hiç dokunmadan, c dosyalarını proje dosyalarından kaldırıp klasördeki daha önce derlenip oluşturulmuş object dosyaları projeye ekleyerek yapabilirsin. Object dosyaları ekledikten sonra klasördeki c dosyalarını silebilirsin. Lib dosyası da zaten bu object dosyaların birleştirilip tek dosya yapılmış hali.

Veya sadece lib yapmak istediğin dosyalar ile proje oluşturup lib oluşturabilirsin.
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

SpeedyX

İkinci seçenek daha uygun gibi geldi. Sadece o dosyalarla lib oluşturmak için yapacağım projede main() olmayacak mı?

ErsinErce

direk projeye dosyaları ekleyip compile etmeniz yeterli hocam
http://www.keil.com/support/docs/2610.htm
http://www.keil.com/support/man/docs/uv4/uv4_ca_createlibraryfile.htm

ya da direk boş bir lib dosyası oluşturup, içine ekleyerek, çıkararak ya da değiştirerek istediğiniz hale getirebilirsiniz hocam
(daha çok sonrası için faydalı)  :)
Creating Static Software Libraries with armar
Creating a new object library
Managing libraries

SpeedyX

#4
Tamamdır, lib oluşturdum.

Dosyaların 4-5 tane .h dosyasını main.h da include ediyordum, şimdi lib i ekleyince o include lar hata veriyor, tamamen kaldırırsam yine olmuyor.

O .h dosyalarını dosya olarak eklemeli miyim?

mesaj birleştirme:: 23 Ağustos 2012, 09:47:16

.h dosyalarını eski yerlerine kopyalayınca düzeldi.

Bunlardan kurtulmanın bir yolu var mı?

ErsinErce

h ve c dosyalarının ikisini de projeye ekleyin hocam o şekilde lib oluşturun
diğer türlü C dosyasında belirtilen adresten h dosyasını çekmeye çalışacaktır

h dosyasında değişiklik gereken kısımlarda h dosyasını dahil etmemek daha faydalı fakat lib dosyasının bulunduğu yere çağırılan isimde h dosyası eklemek gerekiyor

SpeedyX

#include "..\ASD\123.h"
#include "..\ASD\456.h"

şeklinde include ediyorum, şimdi lib içine .h ları da eklersem nasıl include edeceğim?

ErsinErce

C dosyalarını eklediğiniz gibi projedeki gruba sağ tıklayıp dosya ekle diyerek

SpeedyX

Demek istediğim başka.

main.h da bu .h dosyalarını include ediyorum.

Şimdi h ları da lib içine gömüp gerçek dosyaları silersem, derleyici .h dosyalarını orda bulamayınca hata verecektir.

ErsinErce

#9
h dosyalarını lib dosyasına gömerseniz h dosyalarına bir daha ihtiyaç kalmadığından direk derleyecektir hocam

ama h dosyalarını değiştirmek istiyorsanız göstermenize gerek yok,
123.c dosyası için #include "123.h" şeklinde çağrılıyorsa direk lib dosyasının yanına 123.h dosyasını koymanız yeterli
compile ederken h dosyasını arayacağından direk içeriğini alacaktır,

eğer almazsa lib dosyasını kullandığınız projeye h dosyalarını direk ekleyerek bir deneyin hocam


Edit:Yanlış bilgi

SpeedyX

Alıntı yapılan: gerbay - 23 Ağustos 2012, 12:29:39
h dosyasına her durumda ihtiyacınız var. static lib yaptıysanız sadece C dosyalarını tekrar derlemeye ihtiyacınız yok. static lib ile linklemeniz yeterli
Ben de aynı şekilde düşünüyordum. Lib dışında kullanılan .h lar dışarıda olmak zorunda.

Değişiklik istemeyecek .s dosyalarını da lib içine gömmek doğru bir hareket midir?

Cevaplar için teşekkürler.