¿Cómo puedo hacer que Eclipse indexe un árbol de código fuente completo de C / C++ que contenga varios "proyectos make"?


Tengo problemas para que Eclipse indexe mi código fuente. Estoy usando Eclipse Helios en Windows XP en este momento.

Tengo un directorio llamado src. Dentro de él, tengo un montón de dirs, algo así:

 src
   -include (common headers)
   -lib
     -libIO (source code for this library)
     -libGUI  (source code for this library)
   -pgms
     -pgm1  (source code and headers for this pgm)
     -pgm2  (source code and headers for this pgm)

Cada hoja tiene su propio Makefile. No hay Makefile de nivel superior en src. pgm1 puede y incluye archivos de include y lib / libIO y lib / libGUI.

Básicamente, quiero que Eclipse indexe todo mi directorio src, sin tener que configurar un C / C++ proyecto para cada hoja de mi árbol. Parece que no puedo encontrar una manera de hacer que esto suceda.

Aquí están mis síntomas; lo que estoy tratando de resolver:

Al editar el código fuente en el directorio pgm1, hace referencia a las funciones que se declaran en mis archivos de cabecera del directorio include y se definen en los archivos fuente que se encuentran en lib/libIO.

Sin embargo, cuando presiono F3 para llegar a la declaración de una función, Eclipse dice "No se pudo encontrar el símbolo 'X' en el índice". Parece que no puedo conseguir que Eclipse encuentre el declaración de encabezado o la definición de fuente para el método bajo mi cursor (como el módulo Java lo hace perfectamente). Es esto posible?

Author: Puppy, 2011-09-01

13 answers

Tuve exactamente el mismo problema que OP, pero por alguna razón los menús de Eclipse que estaba usando (Helios Service Release 2) no eran "Ir a Propiedades -> C/C++ General -> Rutas y Símbolos -> Ubicación de origen.".

La forma en que solucioné el problema fue :

  • en la vista C / C++, haga clic derecho en el nombre del proyecto superior;
  • en el menú, seleccione Nuevo - >Proyecto C++;
  • en la ventana que aparece, seleccione Convertir a y luego seleccione Proyecto C++;
  • haga clic en Aceptar para cerrar ventana.

Eclipse comenzará a indexar de inmediato. Dependiendo del tamaño del árbol de fuentes puede tomar un tiempo, pero tendrá la indexación trabajando finalmente después de eso.

 27
Author: MHD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-12 19:27:46

Me enfrenté a una situación similar. Lo resolví de esta manera: haga clic derecho en el proyecto en project View-->select Index-->rebuild.

 10
Author: Somabho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-10 20:31:23

Logré resolver esto gracias a los comentarios aquí.... Terminé recreando mi proyecto. Usé el método de importación para descargar un proyecto desde CVS, y le dije que usara el asistente para Nuevo proyecto para hacerlo. Cuando recibí el diálogo Nuevo Proyecto, le dije que este era un proyecto de C++, y la indexación ahora funciona bien.

Todavía me gustaría poder indexar archivos sin tener que adjuntar un tipo de proyecto específico, pero al menos encontré una respuesta.

Gracias por la ayuda a todos.

 4
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-02 15:37:16

Salir de Eclipse. En workspace ir a".metadatos/.plugins / org.eclipsar.cdt.core " y borra todo lo que hay ahí.

 4
Author: CppChase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-22 08:15:21

En el panel explorador de proyectos, haga clic con el botón derecho en el proyecto que desea volver a indexar, luego seleccione index, luego seleccione la acción que desea

 3
Author: user3727512,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-10 19:43:38

La indexación de archivos y variables bajo diferentes banderas siempre es complicada cuando tenemos un gran proyecto, muchos archivos y, lo que es más importante, muchas opciones de compilación diferentes. Prefiero jugar con la opción de Indexador para ayudarme a navegar por todo el código. Puede encontrarlo: Propiedades del proyecto>C / C++ General / Indexer.

Puede elegir "Habilitar configuración específica del proyecto"

Entonces depende de usted elegir las opciones que desea para su proyecto. Para una construcción en particular podemos elegir "Use active build configuration" de modo que solo se consideren los archivos y MACROS utilizados por el script de compilación. O indexar todos los archivos de origen en todo el proyecto.

 2
Author: Binay Kumar Pradhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-10 07:27:56

He experimentado problemas con el indexador de Eclipse Luna cuando había una declaración de amigo sin resolver en la declaración de clase - parece entonces que el indexador se saltó la indexación del resto de esa clase, y todas las referencias a ella se mostraron como no resueltas por el indexador.

Solución: eliminó la declaración de amigo sin resolver (en mi caso, era código heredado que ya no era necesario).

 1
Author: Andreas Lindell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-31 05:31:45

Estoy usando Eclipse Neon 3, aquí está la solución que funcionó para mí:

  • ir al archivo
  • Nuevo
  • Convertir a C / C++ proyecto Autotools a continuación, seleccione su proyecto y finalizar.

Puede llevar algún tiempo terminar la indexación, depende del tamaño del proyecto.

 1
Author: basslo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-19 10:33:59

Intente lo siguiente (mi proyecto está configurado de manera diferente, por lo que no estoy seguro de que esto funcione para usted).

Vaya a Propiedades -> C/C++ General -> Rutas y Símbolos -> Ubicación de origen.

¿Ves tu carpeta de origen allí?

Observo este comportamiento: Cuando agrego una carpeta de origen y luego la excluyo de la compilación, desaparece de la lista anterior. Después de eso, la carpeta ya no se indexa. Volver a agregarlo a "Ubicación de origen" resuelve el problema: la carpeta ahora está indexada; queda excluido de la compilación (según lo previsto); es visible entre las ubicaciones de origen.

Creo que es un error excluding excluir una carpeta de origen de la compilación no debería eliminarla de la lista de ubicaciones de origen.

 0
Author: user443854,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-01 22:26:46

En Coocox IDE (Eclipse + gcc) el problema se resuelve yendo desde el menú archivo Edit > Preferences > C / C++ / Indexer > Build configuration for Indexer set to Active build configuration and the rebuild the project (Ctrl R).

 0
Author: jim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-07 20:55:36

Si el proyecto ya está convertido a C/C++ y aún así el índice no funciona, puede hacer clic derecho en el proyecto e indexar y reconstruir. El proyecto comenzará a indexar de inmediato.

 0
Author: hegu2212,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-05 23:06:20

Estoy usando

Eclipse IDE para desarrolladores de Linux C / C++

Versión: Helios Service Release 2 Código de construcción: 20110218-0911

Seguí las sugerencias anteriores y además tuve que marcar todos los proyectos referenciados (con en el espacio de trabajo) usando propiedades del proyecto - >Referencias del proyecto

 0
Author: Amir Pauker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-08 16:07:34

Lo siguiente me ha funcionado en Eclipse Neon: Nuevo proyecto - > C / C++ -> Proyecto Makefile con código existente - > Siguiente. A continuación, vaya al código y finalice la creación del proyecto. La indexación se inicia automáticamente.

 0
Author: yep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-23 13:54:59