eclipse c++11 build indexer

El indexador Eclipse CDT no conoce los contenedores C++ 11



c++11 build (7)

Como se describe en esta publicación en el foro:

http://www.eclipse.org/forums/index.php/mv/msg/282618/

  • haga clic derecho en el proyecto y vaya a "Propiedades" C / C ++ General -> Rutas y símbolos -> Símbolos -> GNU C ++.
  • Haga clic en "Agregar ..." y pegue __GXX_EXPERIMENTAL_CXX0X__ en "Nombre" y deje "Valor" en blanco. Presione Aplicar, haga lo que le pida, luego presione OK.

Configuré un proyecto de C ++ 11 en Eclipse CDT para usar gcc-4.7. No es el compilador predeterminado en mi sistema, que no es compatible con C ++ 11. Para que la compilación funcione, necesito pasar la bandera -std=c++11 y también incluir la siguiente ruta de encabezado: /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2

Cada vez que uso C ++ 11 tipos de contenedor como std::unordered_set o std::unordered_map , el indexador de CDT se queja: El Symbol unordered_set could not be resolved . ¿Cómo puedo decirle al indexador que resuelva estos símbolos correctamente?

Así es como he configurado mi indexador:

Por lo que entiendo la configuración, se supone que el indexador usa la configuración del compilador de la configuración de compilación actualmente activa. La compilación funciona bien, entonces, ¿por qué no indexar también?


El siguiente funciona en Eclipse C/C++ Oxygen .2 con gcc-5.5.0

Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17

No recoja nada en la lista desplegable de Language standard .


La configuración de **__GXX_EXPERIMENTAL_CXX0X__** no ayuda en mi caso (julio de 2014, Eclipse Kepler 20130919, Ubuntu 12.04).

Para corregir el resaltado de sintaxis de C ++ 11 vaya a:

Propiedades del proyecto -> C / C ++ General -> Rutas y símbolos -> Símbolos -> GNU C ++

y sobrescribe el símbolo (es decir, agrega un nuevo símbolo):

__cplusplus

con valor

201103L

ACTUALIZADO: Si utilizas la versión más nueva de Eclispe (a partir de 2016) y aún experimentas el mismo problema, prueba el valor (como señaló jose.diego):

201402L

Asegúrese de que el indexador esté habilitado en la configuración del proyecto ( C / C ++ general -> indexador )

Luego reindexe ( Proyecto -> Índice C / C ++ -> Reconstruir )

si el problema aún persiste reindexe una vez más. Debería funcionar ahora.


La solución para mí, con un proyecto que utiliza un generador externo, era definir el símbolo:

__cplusplus

con el valor:

201403

en el proyecto: Caminos y símbolos -> Símbolos / GNU C ++.

Esto funcionó en eclipse Kepler CDT Version: 8.3.0.201402142303.


O ir a:

  • C / C ++ Build-> Discovery Options-> GCC C ++ Compiler

  • agregue sus banderas a los argumentos de invocación del compilador. como -std = c ++ 11 -m32

  • Descubra las entradas descubiertas ahora: haga clic en Borrar

  • reconstruir el proyecto

Después de eso, TODOS los símbolos se actualizarán con los valores correctos y el indexador debería funcionar según lo previsto


Resolví este problema recientemente después de un poco de suerte en Google.

Haga clic en su proyecto y haga clic derecho-> Propiedades

Seleccione "C / C ++ General -> Procesador Incluir rutas, macros, etc ..."

Seleccione la pestaña "Proveedores"

Deseleccione todo excepto "Entradas de configuración de usuario CDT" y "Configuración de compilador incorporado CDT GCC"

Haga clic en "Configuración del compilador incorporado CDT GCC"

Deseleccione "Usar proveedor global compartido entre proyectos"

Edite el cuadro en la parte inferior con la etiqueta "Comando para obtener las especificaciones del compilador"

Insertar en el comando -std = c ++ 11 por lo que se ve algo como esto:

${COMMAND} -std=c++11 -E -P -v -dD "${INPUTS}"

Haga clic en Aplicar y en Aceptar.

Eso funcionó para mí. Probablemente necesites volver a indexar el proyecto.


Vea esta guía :

  1. C / C ++ Build-> Settings-> GCC C ++ Compiler-> Dialect
  2. Elija "ISO C ++ 11 (-std = c ++ 0x)" en "estándar de idioma"
  3. Aplicar y OK
  4. Reconstruye el proyecto y funciona :)