Pregunta

Estoy usando Eclipse CDT con Cygwin GCC 3 como compilador. Mi proyecto está utilizando un MakFile personalizado.

El problema es que al depurar el código, no pudo localizar los archivos de origen, a pesar de que agregué una asignación de ruta personalizada para: /cygdrive/c <-> c:\

Que además del hecho de que estoy obteniendo "inclusión no resuelta"Para todos los archivos de encabezado estándar, a pesar de que el programa se compila y funciona bien.

Tracé el problema al "descubrimiento automático"Opción, que muestra el siguiente error:

screenshot1

Tenga en cuenta que me aseguré de que el directorio del espacio de trabajo esté en una ruta sin espacios. Lo extraño es que cuando ejecuto ese comando problemático en el shell, funciona bien con la siguiente salida:

$ 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

También intenté agregar manualmente a la ruta de inclusión:

screenshot2

¿Cómo puedo solucionar esto para que descubra tanto las rutas de incluido como los símbolos definidos? ¿Debo intentar apagar el descubrimiento automático y codificar las rutas requeridas en el .cproject ¿expediente? Se agradece cualquier ayuda (¡solo le pido que no sugiera usar Mingw en lugar de Cygwin!)

¿Fue útil?

Solución

La suya es una fuente más frecuente de quejas con respecto a la mezcla de Eclipse y Cygwin. El quid del problema es que Eclipse entiende solo el entorno y cygwin de Windows, bueno, no tanto.

Defina sus rutas en el estilo de Eclipse Windows. También es /usr está bajo c: cygwin, debe darle el camino completo. De lo contrario, Eclipse intentará encontrarlo bajo C: usr y aparecer vacío.

Además, ¿sus definiciones de ruta se agregan o reemplazan su entorno de Windows? Probablemente estará más feliz de agregar a su entorno en lugar de reemplazar.

Nunca probé autodetect: es posible que tenga que codificar esas rutas en .cproject

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top