August 9, 2008

gcc dışında bir derleyici ile Eclipse CDT kullanmak

Düşünün ki Visual Studio yerine Eclipse kullanıyorsunuz ve dolayısıyla derleyici olarak msvc kullanmak zorundasınız. Veya bir gömülü sistem için kod geliştiriyorsunuz ve hedef sistemin derleyicisi gcc uyumlu değil. Peki Eclipse'i etkin bir şekilde kullanmak ve onun özelliklerinden faydalanmak için ne yapmak gerekiyor?

İlk olarak, niye gcc uyumluluığu aradığımızı belirtelim. CDT ile birlikte gelen "Call Hierarchy", "Type Hierarchy" gibi özellikler, "Indexer" denen servisin başarılı bir şekilde çalışmasına bağlıdır. Bu servisin başarımının artırılması için başlık dosyalarının (*.h, *.hpp vs.) bulunduğu klasörler ve gerekiyorsa kullanılan semboller projede belirtilmelidir.

Eğer gcc kullanıyorsak, CDT ile birlikte bu işlemi otomatik olarak yapan bir keşif sistemi (GCC scanner info profile) gelmektedir. Bu da derleme işlemi sırasında konsol'a basılan gcc komutuyla sağlanmaktadır. Yani, bir metin ayıklayıcı (parser) bu çıktıyı incelemekte ve gerekli eklentileri projeye eklemektedir.

Eğer gcc uyumlu bir derleyici kullanmıyorsak, ufak bir hile ile bu işlemin çalışmasını yine de sağlayabiliriz. Önemli olan sadece:

1. "Include Path" : Bu bilgi -I parametresiyle konsola basılmalıdır.
2. "Define": Bu bilgi -D parametresiyle konsola basılmalıdır.

Böylece, eğer gcc ile derleme yapmasak bile konsola bir gcc derleme komutu basarsak, bunun otomatik olarak çalışmasını sağlayabiliriz. Burada, derleme komutuna ek olarak her dosyayı derlerken kullanılmak üzere eklememiz gereken komut aşağıdaki gibidir.

@echo gcc -I... -D... file.c -o file.o

Son olarak, otomatik algılama mekanizması her dosya için ayrı ayrı yapılabildiği gibi (per file), proje için tek bir ayar olarak (per project) da yapılabilmektedir. Eğer bazı dosyalarda farklı ayarlarınız varsa, dosya odaklı sistemi kullanmanız daha doğru olacaktır. Onun dışında proje odaklı olan gayet hızlı bir şekilde işimizi görmektedir.

Görüşmek üzere...

1 comment:

ALi said...
This post has been removed by a blog administrator.