c++ ¿Cómo habilitar el soporte de C ++ 11 / C ++ 0x en Eclipse CDT?




7 Answers

Instrucciones para Eclipse CDT 4.4 Luna y 4.5 Marte

Primero, antes de crear un proyecto, configure el analizador de sintaxis de Eclipse:

Window -> Preferences -> C/C++ -> Build -> Settings -> Discovery -> CDT GCC Build-in Compiler Settings

en el cuadro de texto titulado Command to get compiler specs adjuntar -std=c++11

Ahora puede crear un proyecto, la configuración depende del tipo de proyecto que haya creado:

Para el proyecto creado como: Archivo -> Nuevo -> Proyecto -> C / C ++ -> Proyecto C ++

Haga clic derecho sobre el proyecto creado y abrir

Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Dialect

Coloque -std=c++11 en el cuadro de texto titulado other dialect flags -std=c++11 other dialect flags o seleccione ISO C++11 en el menú desplegable Language standard .

Para proyecto CMake

Genera archivos de proyecto eclipse (dentro de tu proyecto)

mkdir build
cd build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..

Luego importar el directorio generado a eclipse como proyecto eclipse estándar. Haga clic derecho en el proyecto y abra

Properties -> C/C++ General -> El Preprocessor Include Paths, Marcos etc. -> Providers

habilitar la CDT GCC Build-in Compiler Settings Contributed PathEntry Containers CDT GCC Build-in Compiler Settings y moverla a un nivel superior al de los Contributed PathEntry Containers (esto es importante)

Último paso común

recompile, vuelva a generar el Project -> C/C++ Index y reinicie Eclipse.

c++ eclipse c++11 eclipse-cdt

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

Este es un ejemplo de una pieza de código C ++ 11:

auto text = std::unique_ptr<char[]>(new char[len]);

El editor de Eclipse se queja de:

Function 'unique_ptr' could not be resolved

La compilación de Makefile funciona bien. ¿Cómo hacer que Eclipse deje de quejarse de este tipo de errores?




Para el último eclipse (Juno) cdt lo siguiente funcionó para mí, no hay necesidad de declarar __GXX_EXPERIMENTAL_CXX0X__ sobre mí mismo. Esto funciona para el indexador CDT y como parámetro para el compilador:

"nombre de su proyecto" -> clic derecho -> propiedades:

C / C ++ General -> Preprocesador incluye rutas, macros, etc. -> cambia a la pestaña llamada "Proveedores":

  • para "Configuración" seleccione "Liberar" (y luego "depurar")

  • apague todos los proveedores y simplemente seleccione "Configuración del compilador incorporado de CDT GCC"

  • desmarque "Compartir entradas de configuración entre proyectos (proveedor global)"

  • en el "Comando para obtener especificaciones del compilador:" agregar "-std = c ++ 11" sin las comillas (puede que también funcione con comillas)

  • pulsa aplicar y cierra las opciones

  • reconstruir el índice

Ahora todas las cosas relacionadas con c ++ 11 deben ser resueltas correctamente por el indexador.

win7 x64, el último eclipse oficial con cdt mingw-w64 gcc 4.7.2 del proyecto mingwbuilds en sourceforge




Para Eclipse CDT Kepler, lo que funcionó para deshacerme del símbolo std::thread sin resolver es:

  1. Vaya a Preferencias-> C / C ++ -> Construir-> Configuración

  2. Seleccione la pestaña Descubrimiento

  3. Seleccione CDT GCC Configuraciones del compilador incorporado [Compartido]

  4. Agregue el comando -std = c ++ 11 al "Comando para obtener las especificaciones del compilador:" como:

$ {COMANDO} -E -P -v -dD -std = c ++ 11 $ {ENTRADAS}

  1. Ok y Reconstruir Índice para el proyecto.

Agregar -std=c++11 a las Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other proyecto Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other Flags no fue suficiente para Kepler, sin embargo, fue suficiente para versiones anteriores como como helios.




También tuve varios problemas (Ubuntu 13.04 de 64 bits, g ++ - 4.8, eclipse Juno 3.8.1, CDT 6.0.0). Muchas cosas se mencionaron anteriormente, lamento repetirlas, pero además tuve problemas al utilizar

std::thread

como parte de c ++ 11 (agregar -pthread para el vinculador resuelve ese problema). De todos modos, finalmente estos ajustes funcionaron bien:

Proyecto -> Propiedades -> Compilación C / C ++ -> Configuración -> Miscelánea. Añade el

-std=c++11

Bandera para los compiladores GCC y G ++. Haga clic en Aplicar.

Para el enlazador, misma ventana, Misceláneo, banderas de vinculador, se agregó la

-pthread

bandera. Configuración de biblioteca compartida, Nombre de objeto compartido, agregue el

-Wl,--no-as-needed

bandera también Haga clic en Aplicar.

C / C ++ General -> Rutas y símbolos -> Símbolos TAB, GNU C ++ seleccionado, Agregar

__GXX_EXPERIMENTAL_CXX0X__

(sin valor)

bandera. Haga clic en Aplicar.

C / C ++ General -> Preprocesador Incluir rutas .. -> Pestaña Proveedores: verificar

Configuración del compilador incorporado CDT GCC

y para "Comando para obtener especificaciones del compilador", agregue el

-std=c++11

bandera. Desmarca Compartir. Haga clic en Aplicar.

CDT administra las entradas de configuración de compilación, verifique esto también. Desmarque los otros dos. Haga clic en Aplicar.

Volviendo a la pestaña Entradas, GNU C ++ CDT administra las entradas de configuración de compilación, ahora debería ver su agregado

__GXX_EXPERIMENTAL_CXX0X__

entrada.

Eso es. Al codificar, escribiendo

std::

ahora puede completar automáticamente la clase de hilo, por ejemplo, las compilaciones deberían funcionar bien y no debería haber

std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted

en tiempo de ejecución.




Para mí en Eclipse Neon seguí la respuesta de Trismegistos aquí arriba , AÚN también agregué un paso adicional:

  • Vaya al proyecto -> Propiedades -> C ++ General -> El preprocesador incluye rutas, macros, etc. -> Proveedores -> Configuración del compilador incorporado de CDT Cross GCC, agregue la marca "-std = c ++ 11"

Pulse aplicar y Aceptar.

Aclamaciones,

Chico.




Ni el hack ni la versión más limpia funcionan para Indigo. El hackeo se ignora y faltan las opciones de configuración requeridas. Sin ninguna razón aparente, la compilación comenzó a funcionar después de no funcionar y no proporcionó ninguna razón útil para ello. Al menos desde la línea de comandos, obtengo resultados reproducibles.




Eclipse C / C ++ no reconoce el símbolo std::unique_ptr aunque haya incluido el encabezado de memoria C ++ 11 en su archivo.

Suponiendo que está utilizando el compilador GNU C ++, esto es lo que hice para solucionarlo:

Proyecto -> Propiedades -> C / C ++ General -> Preprocesador incluye rutas -> GNU C ++ -> Entradas de configuración de usuario de CDT

  1. Haga clic en el botón "Agregar ..."

  2. Seleccione "Macro de preprocesador" en el menú desplegable

    Name: __cplusplus     Value:  201103L
    
  3. Presione Aplicar y luego Aceptar para volver a su proyecto.

  4. Luego reconstruya su índice de C ++: Proyectos -> Índice de C / C ++ -> Reconstruir




Related