I have several configurations for a large project. That means some files and some parts of the files (#ifdef) are not compiled all the time. Also, configurations might not be using same compiler at all. Another detail is, I have an external build system and not using CDT's managed make.
Formerly, I was setting indexer to parse all files and I was adding some include paths and macro defines to project settings manually. Indexer was running slowly and it was not working good enough because of the missing macro defines and include paths. But everything has been changed recently.
What Auto Discovery Brings:
After learning a trick to make auto discovery work for every compiler (printing a fake gcc compile command to console), I can now use auto discovery mechanism for my compilers including msvc. That brought me a lot. Indexer is working much better now. However, this is not enough. I can now use indexer to use active build configuration.
What Active Build Configuration Brings:
I selected to run indexer for active build configuration. And set auto discovery mechanism to "per file". Now, It is now above my expectations. Indexer run faster because it indexes only compiled files. When I click F3, editor opens the right definition of the function (formerly, it was listing all definitions available). Also, it automatically enables or disables #ifdef/#endif parts correctly in the editor when you change active build configuration. That is amazing.
What should I say? Thanks guys. Thanks a lot.
August 22, 2008
August 19, 2008
Highlighting Eclipse console messages
I often need to configure my C/C++ project builds to give verbose output. This is required to let auto discovery mechanism work if you do not use a log file for it. In that case, it is really hard to find some kind of build messages (warning, error, etc.) from that mess.
Recently, I've started to use a plug-in called Grep Console. There are some compilers I use that error parsers don't work so I added my regular expressions to highlight error messages with a red background. That's really handy because Problems view does not show up anything or error for that special compiler.
That was just one usage scenario. If you have something printed to Eclipse console and you usually find yourself looking for a message on that mess, this plug-in might help you to find what you want in a short time.
Recently, I've started to use a plug-in called Grep Console. There are some compilers I use that error parsers don't work so I added my regular expressions to highlight error messages with a red background. That's really handy because Problems view does not show up anything or error for that special compiler.
That was just one usage scenario. If you have something printed to Eclipse console and you usually find yourself looking for a message on that mess, this plug-in might help you to find what you want in a short time.
August 18, 2008
Is it possible to use Eclipse with less memory?
Today, I've seen a program called Minimem (for Windows), to reduce memory footprints of memory-heavy applications. Fortunately, I have one big memory-heavy application called "Eclipse" :)
I have downloaded Minimem from its website (http://minimem.kerkia.net/) and set up to optimize memory usage of Eclipse. Numbers say it is really working but I'll continue testing for a while.
Give it a try if you have memory problems related to Eclipse, or any other memory-heavy application.
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...
İ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...
Subscribe to:
Posts (Atom)