2012-08-30 13 views
11

Tengo un espacio de trabajo con múltiples proyectos, que compilan sin problemas. Sin embargo, algunos de los proyectos están dando muchas advertencias en el editor sobre símbolos no resueltos, debido a inclusiones no resueltas. La mayoría son encabezados de otros proyectos en el espacio de trabajo o bibliotecas de terceros.Indicador Eclipse CDT - cómo resolver sin resolver incluye

Google sugiere que este es un problema con el indexador, pero no he encontrado explicaciones coherentes sobre cómo solucionarlo. Supongo que necesito agregar las rutas a estas bibliotecas al PATH del indexador, pero no puedo ver cualquier opción para hacer eso (estoy usando Juno).

¿Puede alguien explicarme cómo configurar el indexador de CDT?

También me estoy quedando sin resolver, incluidas las advertencias para los encabezados de STL en dos proyectos. Algunos encabezados STL se resuelven pero otros no, y la lista no parece ser la misma entre los dos proyectos (uno encuentra cosas como vector y iostream, pero no sstream o string, el otro tampoco encuentra iostream) .

Posiblemente relevante: se trata de proyectos C++, pero todas las extensiones de archivo son .c. Cambié el comando GCC C Compiler a 'g ++' para compilarlos, pero supongo que también tengo que hacer algo con la configuración del indexador para poder manejarlo.

Respuesta

6

Bien, ahora he resuelto este problema.

  1. No resuelto incluye otros proyectos en el espacio de trabajo y bibliotecas de terceros se resolvió agregando los otros proyectos como referencias. Supongo que el compilador sabía dónde buscar porque había agregado las ubicaciones a la lista de inclusión, pero el indexador no (posiblemente debido a eclipse solo el procesamiento de encabezados una vez?)

  2. No resuelto incluye desde STL lo arreglé cambiando todos mis archivos .c que en realidad eran de C++ a .cpp. Simplemente cambiar el comando de compilación a 'g ++' obviamente no fue suficiente para decirle al indexador que tratara el proyecto como C++.

En el caso de 1), necesité limpiar/reconstruir el índice de los proyectos referenciados primero para eliminar los errores de inclusión no resueltos.

+1

(Nota: trabajando con el sabor de QNX Momentics de Eclipse CDT.) Tenemos una estructura de directorio completa de clases de 'interfaz', que no hemos colocado en ningún proyecto. En base a esta respuesta, creé un único proyecto en el nivel de la carpeta 'interfaz', que incluía los encabezados y el origen de todas las subcarpetas. Al agregar el proyecto de esta carpeta como referencia de proyecto, se arregló lo que no se resolvió Y de repente todos mis errores y advertencias proporcionan enlaces. (Le dije a este proyecto que deje de basarse en el primer error, lo que me permite evitar largos tiempos de compilación). – sage

5

clic derecho sobre el proyecto en el área de trabajo, elija Properties ->C++ General ->Paths and Symbols, a continuación, añadir incluye y símbolos para su compilador específica, agregue las bibliotecas, y otras cosas que necesita en las fichas disponibles. Después de eso, marque Apply - debería comenzar a volver a indexar, y sus problemas deberían desaparecer.

+2

Gracias por su respuesta Alexandru. Desafortunadamente, esto no parece ayudarme, la lista en 'Propiedades> C++ General> Rutas y Símbolos' parece ser un espejo de la lista en' C/C++ Build> Configuración> Configuración de herramienta> Includes', que tuve ya se ha llenado con rutas a los directorios de inclusión necesarios para compilar el proyecto. Sin embargo, el indexador todavía emite 'advertencias' no resueltas para encabezados en esos directorios. – jam

+0

Puede intentar lo siguiente: haga clic con el botón derecho en su proyecto, 'Propiedades' ->' Índice' y pruebe las opciones allí: 'Reconstruir',' Actualizar con archivos modificados', 'Actualizar todos los archivos',' Buscar no resueltos'' . Por lo general, las opciones 2 y 3 solucionan mis problemas. –

+1

Ya había reconstruido mi índice, pero gracias por la sugerencia. Creo que puedo haber descifrado esto, noté que las inclusiones no resueltas en un proyecto se estaban enumerando bajo el nombre de uno de los otros proyectos. Entonces, agregué ese proyecto como referencia, reconstruí el índice, y ahora dice 0 incluye sin resolver. Veré si esta solución funciona para todos mis proyectos y agréguela como respuesta si es así :) – jam

3

Tuve un problema similar donde mi proyecto se compilaría pero mostró inclusiones no resueltas en Eclipse Kepler.

En mi caso, había tomado un proyecto ARM existente y había creado una configuración de compilación personalizada que utilizaba una cadena de herramientas diferente. La nueva configuración de construcción tenía todas las inclusiones correctas, por lo que el proyecto se construyó correctamente pero el indexador no lo recogió.

Lo arreglé configurando el indexador para usar la configuración de compilación activa. En Ventana-> Preferencias-> C/C++ -> Indexador, en la sección "Configuración de compilación para el indexador", seleccioné "Usar configuración de compilación activa" y lo aclaró.

0

Todas las respuestas son útiles pero hubo otro truco que resolvió mi problema. Descubrí que, a diferencia del compilador , el indexador no procesa los subdirectorios de las rutas incluidas. Por lo tanto, debe ser más específico al incluir archivos de encabezado.

Ejemplo
# include "subdirectorio \ include_2.h"

Cuestiones relacionadas