portable - Habilitación de C++ 11 en Eclipse Juno/Kepler/Luna CDT
eclipse portable (8)
A partir de CDT 8.3 ( disponible como actualización de Kepler ), hay una nueva opción de dialecto en la configuración de compilación:
EDITAR: Resulta que esto realmente no es específico de Eclipse Kepler. Tuve que usar el mismo proceso para Eclipse Juno. El problema es que parece que faltan pasos en otras publicaciones que responden esta misma pregunta.
Estoy usando Eclipse Kepler para C ++ y estoy tratando de usar C ++ 11 y obtener errores. Cuando compilo obtengo el error
error: los bucles range-based-for no están permitidos en el modo C ++ 98
He seguido las instrucciones de la publicación
Compatibilidad con Eclipse CDT C ++ 11 / C ++ 0x
y la solución dada para Eclipse Juno no está funcionando.
Diferentes comentarios han sugerido reiniciar el eclipse y limpiar y reconstruir. Eso no ha hecho la diferencia.
Al agregar el indicador dialecto "-std = c ++ 11" a Propiedades del proyecto-> C / C ++ compilación-> Configuración -> Configuración de herramienta (compilador GCC C ++ -> Dialecto) resolvió mi problema en Eclipse Kepler, aparte de los ajustes indicados anteriormente.
Ejecutando eclipse índigo y cdt 8.0.2 aquí. Seguí todas las guías, pero aún era necesario configurar manualmente el preprocesador para encontrar cosas como std :: unique_ptr. El archivo de inclusión "memoria" verifica esto. Establezca __cplusplus en 201103L en la pestaña "Símbolos" en "Rutas y símbolos" en "C ++ General" en las propiedades del proyecto.
Estoy usando Eclipse Luna y no hay "Configuración de herramienta" en C / C ++ Build -> Configuración. He añadido -std = c ++ 11 a la línea de comandos de especificaciones del compilador en "C / C ++ General -> Preprocesador Incluye -> Proveedores" como se sugiere. Pero eso aún no satisfacía la capacidad de mi indexador para resolver emplace ().
Así que busqué en el archivo de encabezado y encontré que las funciones de emplace dependen de __cplusplus> = 201103L. Así que acabo de agregar el símbolo del preprocesador "__cplusplus" y le di el valor 201103.
Un poco hackish pero el indexador está feliz. (Y los makefiles definen mis banderas de compilación, no el proyecto de eclipse)
Hay dos cosas que debes hacer, primero necesitas configurar tu compilador, luego debes configurar el procesador de lenguaje de CDT. Como no mencionó qué compilador está utilizando, asumiré que es GCC pero los pasos serán similares para otros compiladores. (Tenga en cuenta que necesita un compilador que admita C ++ 11, por supuesto).
Configurar el compilador es bastante sencillo:
- Haga clic derecho en su proyecto y haga clic en Propiedades
- En C / C ++ Build haga clic en Configuración
- En el compilador GCC C ++, haga clic en Varios
- En el cuadro Otras banderas, agregue "-std = c ++ 11" a la lista de tokens.
- Haga clic en Aplicar y Aceptar
En este punto, debería poder reconstruir su proyecto y ejecutarlo. Pero CDT todavía puede mostrar errores para C ++ 11 incluye. Así es cómo puedes resolver eso:
- Haga clic derecho en su proyecto y haga clic en Propiedades
- Debajo de C / C ++ General, haga clic en "Preprocesador Incluir rutas, macros"
- Seleccione la pestaña Proveedores
- Debería haber un elemento en la lista que diga algo así como "GCC Built in Compiler Settings". Seleccione esta entrada
- Desmarque la opción "Usar proveedor global ..."
- Debajo de la lista, hay una casilla que dice "Comando para obtener las especificaciones del compilador". Agregar "-std = c ++ 0x" a esto.
- Mueva el proveedor "GCC Built in Compiler Settings" en la parte superior de la lista usando el botón "Move Up" a la derecha.
- Haga clic en Aplicar y luego en Aceptar.
- De vuelta en su espacio de trabajo de Eclipse, seleccione el Menú del proyecto, Índice C / C ++ y haga clic en "Volver a resolver las inclusiones sin resolver".
La solución provista por MrEricSir solo funciona después de tener instalada la última Eclipse Oxygen CDT. No funciona para mí con Mars CDT.
Yo uso Eclipse Kepler y para solucionarlo hice esto:
1 - Haga clic con el botón derecho en el Proyecto >> Propietarios >> C / C ++ Build :: Configuración
2 - Fui a GCC Compilador de G ++ >> Varios >> Otros indicadores
i then added -std=c++11
hit apply and ok
Eso solucionó mi problema!
¡Espero que haya sido de ayuda!
Compatibilidad con C ++ 11 en Eclipse Kepler Service Release 1 (ID de compilación: 20130919-0819)
En la última versión de Eclipse Kepler SR1, solo tiene que agregar -std = c ++ 11
- Haga clic derecho en su proyecto y haga clic en Propiedades
- Vaya a C / C ++ General y Preprocesador Incluya rutas, macros, etc.
- Seleccione la pestaña Proveedores
- Add -std = c ++ 11 a Command para obtener las especificaciones del compilador:
- Aplicar cambios, el índice debe generarse automáticamente.
La línea "Comando para obtener las especificaciones del compilador:" debería verse así:
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11