[c++] Compatibilidad con Eclipse CDT C ++ 11 / C ++ 0x



Answers

Instrucciones para Eclipse CDT 4.4 Luna y 4.5 Mars

Primero, antes de crear el proyecto, configure el analizador sintáctico 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 append -std=c++11

Ahora puede crear proyectos, la configuración depende de qué tipo de proyecto haya creado:

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

Haga clic derecho en el proyecto creado y abra

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

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

Para el 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 ..

A continuación, importe el directorio generado a eclipse como proyecto de eclipse estándar. Haz clic derecho en el proyecto y ábrelo

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

habilitar la CDT GCC Build-in Compiler Settings y moverla más Contributed PathEntry Containers (esto es importante)

Último paso común

recompilar, regenerar Project -> C/C++ Index y reiniciar Eclipse.

Question

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 Makefile funciona bien. ¿Cómo hacer que Eclipse deje de quejarse de este tipo de errores?




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

  • Ir al proyecto -> Propiedades -> C ++ General -> Preprocesador Incluir rutas, macros, etc. -> Proveedores -> CDT Cross GCC Configuración del compilador incorporado, anexar la bandera "-std = c ++ 11"

Presione aplicar y OK.

Aclamaciones,

Chico.




También tuve varios problemas (Ubuntu 13.04 de 64 bits, g ++ - 4.8, eclipse de Juno 3.8.1, CDT 6.0.0). Se mencionan muchas cosas más arriba, siento repetirlas, pero además tuve problemas para utilizar

std::thread

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

Proyecto -> Propiedades -> C / C ++ Build -> Configuración -> Varios. Añade el

-std=c++11

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

Para el vinculador, la misma ventana, Miscelánea, banderas de Enlazador, agregó el

-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 el

__GXX_EXPERIMENTAL_CXX0X__

(sin valor)

bandera. Haga clic en Aplicar.

C / C ++ General -> Preprocesador Incluir rutas ... -> pestaña Proveedores: comprobación

Configuración del compilador incorporada de CDT GCC

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

-std=c++11

bandera. Desmarque Compartir. Haga clic en Aplicar.

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

Volviendo a la pestaña Entradas, GNU C ++ CDT Managages Build Setting Entries, ahora debería ver su agregado

__GXX_EXPERIMENTAL_CXX0X__

entrada.

Eso es. Al codificar, escribir

std::

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

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

en tiempo de ejecución.




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

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

Proyecto -> Propiedades -> C / C ++ General -> Preprocesador Incluir rutas -> GNU C ++ -> Entradas de configuración de usuario 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 OK para regresar a su proyecto

  4. A continuación, reconstruya su índice C ++: Proyectos -> Índice C / C ++ -> Reconstruir




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

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

  2. Seleccione la pestaña Discovery

  3. Seleccionar la configuración del compilador incorporado CDT GCC [Compartido]

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

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

  1. Ok y Rebuild Index para el proyecto.

Agregar -std = c ++ 11 a Project 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 tales como Helios.




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




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

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

C / C ++ General -> Preprocesador Incluir rutas, macros, etc. -> cambiar a la pestaña denominada "Proveedores":

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

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

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

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

  • presionar aplicar y cerrar las opciones

  • reconstruir el índice

Ahora todo el material relacionado con c ++ 11 debe ser resuelto correctamente por el indexador.

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




Related