2012-08-30 21 views
11

Birden fazla projeyle ilgili bir çalışma alanım var. Ancak, bazı projeler, çözümlenmemiş içerikler nedeniyle, çözümlenmemiş semboller hakkında editörde çok fazla uyarı veriyor. Çoğu çalışma alanındaki diğer projelerin başlıkları veya üçüncü parti kütüphaneleridir.Eclipse CDT dizinleyici - çözülmeyen özümleri nasıl çözebilir

Googling, bunun dizinleyici ile ilgili bir sorun olduğunu öne sürüyor, ancak nasıl düzeltileceğine dair herhangi bir tutarlı açıklama bulamadım - dizinlerin PATH'sine bu kitaplıkların yollarını eklemem gerektiğini varsayalım, ancak Bunu yapmak için herhangi bir seçenek gör (Juno kullanıyorum).

Lütfen CDT'nin dizinleyicisini nasıl yapılandıracağımı açıklayabilir misiniz?

Ayrıca iki projede STL üstbilgileri için çözülmemiş uyarıları da alıyorum. Bazı STL başlıkları çözülür, ancak diğerleri değişmez ve liste iki proje arasında aynı görünmüyor (vektör ve ikincisi gibi şeyler buluyor, fakat sstream veya string değil, diğeri de iostream bulamıyor) .

Muhtemelen ilgili: Bunlar C++ projeleridir, ancak tüm dosya uzantıları .c'dir. Bunları derlemek için GCC C Derleyici komutunu 'g ++' olarak değiştirdim, ama sanırım dizin düzenleyiciyle başa çıkmak için bir şeyler yapmam gerekiyor mu?

cevap

6

Tamam, bu yüzden şimdi bu sorunu çözdüm. Çözülemeyen çalışma alanı ve üçüncü taraf kütüphanelerde diğer projelerden içerir

  1. referanslar olarak diğer projeleri ekleyerek çözüldü. Derleyicinin nereye bakacağını bildiğimi sanıyorum, çünkü içeriklerini İçindekiler listesine ekledim, ancak dizinleyici (muhtemelen üstbilgileri yalnızca bir kez işlemek tutulduğundan dolayı) yapmadı.

  2. Gerektiğinde çözülmeyen sabit STL I içerir C++ aslında .cpp olan tüm .c dosyaları. Sadece derleme komutunun 'g ++' olarak değiştirilmesi, dizinleyicinin projeyi C++ olarak ele almasını söylemek için yeterli değildi.

1) çözümlenmemiş dahil etme hatalarını gidermek için önce başvurulan projelerin dizinini temizlemem/yeniden oluşturmam gerekiyordu.

+1

(Not: Eclipse CDT'nin QNX Momentics lezzeti ile çalışıyor.) eklemek zorunda kaldım. 'Arayüz' sınıflarının tüm dizin yapısına sahibiz. hiçbir projeye yer vermedik. Bu cevaba dayanarak, tüm alt klasörler için başlıkları ve kaynakları içeren 'interface' klasör seviyesinde tek bir proje oluşturdum. Bu klasörün projesini bir proje referansı olarak eklemek çözümlenmemiş olan düzeltilmiş düzeltmeleri içerir VE aniden hatalarım ve uyarılarımın tümü bağlantı sağlar! (Bu projeye, uzun derleme sürelerinden kaçınmamı sağlayan ilk hatayı oluşturmayı durdurmak için söyledim.) – sage

5

Sağ, çalışma alanında projenizi tıklayın Properties seçim ->C++ General ->Paths and Symbols, ardından eklemek içerir ve özel derleyicisi için semboller, kütüphaneler eklemek ve diğer şeyler kullanılabilir sekmelerde bulunan gerekiyor. Bu Apply isabetinden sonra - yeniden indekslemeye başlamalı ve problemleriniz gitmiş olmalı.

+2

teşekkürler. Ne yazık ki, bu bana yardımcı görünmüyor - 'C++ C++ Genel> Yollar ve Semboller' altındaki liste 'C/C++ Oluşturma> Ayarlar> Araç Ayarları> İçindekiler' altındaki listenin bir aynası gibi görünüyor. Projeyi derlemek için gereken dizinleri içeren yollarla zaten doldurulmuş. Bununla birlikte, dizinleyici hala bu dizinlerdeki başlıklar için 'çözülmemiş' uyarıları içerir. – jam

+0

Aşağıdakileri deneyebilirsiniz: 'Properties' -> Index 'projenizi sağ tıklayın ve oradaki seçenekleri deneyin:' Rebuild ',' Değiştirilmiş dosyalar ile güncelle ',' Tüm dosyaları temizle ',' Çözümlenmemiş içeriklerini ara ' . Genellikle 2 ve 3 numaralı seçenekler sorunlarımı giderir. –

+1

Dizimi zaten yeniden oluşturdum, ancak öneri için teşekkürler. Bunu kırmış olabileceğime inanıyorum - bir projede çözümlenmemiş olanların aslında diğer projelerden birinin adı altında listelendiğini fark ettim. Bu yüzden bu projeyi referans olarak ekledim, endeksi yeniden oluşturdum ve şimdi çözülmemiş 0 içerir. Bu düzeltmenin tüm projelerim için işe yarayıp yaramayacağını ve eğer öyleyse bir cevap olarak eklemeyi öğrenecek :) – jam

3

Projemin oluşturulacağı, ancak Eclipse Kepler'de çözümlenmemiş özellikler içerdiği benzer bir sorun yaşadım.

Benim durumumda, mevcut bir ARM projesini almış ve farklı bir takım zinciri kullanan özel bir yapılandırma yapılandırması yaratmıştım. Yeni derleme yapılandırması tüm doğru içeriğe sahipti, bu nedenle proje doğru bir şekilde oluşturuldu, ancak dizinleyici bunu almıyordu.

Etkin yapı yapılandırmasını kullanmak için dizinleyiciyi ayarlayarak sabitledim. Window -> Preferences-> C/C++ -> Indexer'da, "Indexer için yapılandırma oluştur" etiketli bölümün altında "Etkin yapı yapılandırması kullan" ı seçtim ve temizledim.

0

Tüm cevaplar yararlıdır, ancak sorunumu çözen başka bir numara vardı. Derleyicinin aksine, dizinleyicinin numaralı yolların alt dizinlerini işlemediğini öğrendim. Bunun için başlık dosyalarını dahil ederken daha spesifik olmanız gerekir.

Örnek
#include "alt dizin \ include_2.h" Yanıtınız Alexandru için

İlgili konular