Question

J'utilise Eclipse CDT avec Cygwin GCC 3 comme compilateur. Mon projet utilise un makefile personnalisé.

Le problème est que lors du débogage du code, il n'a pas pu localiser les fichiers source, même si j'ai ajouté un mappage de chemin personnalisé pour: /cygdrive/c <-> c:\

Qu'en plus du fait que je reçois "inclusion non résolue"Pour tous les fichiers d'en-tête standard, même si le programme se compile et fonctionne bien.

J'ai tracé le problème au "découverte automatique"Option, qui montre l'erreur suivante:

screenshot1

Notez que je me suis assuré que le répertoire de l'espace de travail est sur un chemin sans aucun espace. Ce qui est étrange, c'est que lorsque j'exécute cette commande problématique dans le shell, cela s'exécute très bien avec la sortie suivante:

$ gcc -E -P -v -dD C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure --verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/cc1.exe -E -quiet -v -P -D__CYGWIN32__ -D__CYGWIN__ -Dunix -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api C:/Users/Amro/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c -mtune=pentiumpro -dD
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/include"
ignoring duplicate directory "/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/lib/../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api
End of search list.
#define __STDC_HOSTED__ 1
#define __GNUC__ 3
       [.... truncated ....]
#define __unix__ 1
#define __unix 1

J'ai également essayé d'ajouter manuellement au chemin d'inclusion:

screenshot2

Comment puis-je résoudre ce problème afin qu'il découvre à la fois les chemins d'inclusion et les symboles définis? Devrais-je essayer d'éteindre la découverte automatique et de code dur les chemins requis dans le .cproject dossier? Toute aide est appréciée (je demande seulement que vous ne suggériez pas d'utiliser Mingw au lieu de cygwin!)

Était-ce utile?

La solution

Le vôtre est une source fréquente de plaintes concernant le mélange Eclipse & Cygwin. Le nœud du problème est qu'Eclipse ne comprend que l'environnement Windows et le cygwin, enfin pas tant.

Définissez vos chemins dans le style Windows Eclipse. Est également / usr est sous c: cygwin, vous devez lui donner le chemin complet. Sinon, Eclipse va essayer de le trouver sous c: usr et venir vide.

De plus, vos définitions de chemin ont-elles appris ou remplacer votre environnement Windows? Vous serez probablement plus heureux d'appuyer sur votre environnement plutôt que de remplacer.

Jamais essayé automatiquement - vous devrez peut-être coder dur ces chemins dans .cproject

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top