¿Cómo habilitar la compatibilidad con C++11/C++0x en Eclipse CDT?
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2
Este es un ejemplo de un fragmento 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?
Encontré este artículo en el foro de Eclipse, simplemente seguí esos pasos y me funciona. Estoy usando Eclipse Indigo 20110615-0604 en Windows con una configuración Cygwin.
- Hacer un nuevo proyecto C++
- Opciones predeterminadas para todo
- Una vez creado, haga clic derecho en el proyecto y vaya a "Propiedades"
- Compilación C/C++ -> Configuración -> Configuración de herramientas -> Compilador GCC C++ -> Varios -> Otras banderas. Ponga
-std=c++0x
(o para la versión más nueva del compilador-std=c++11
al final... ... en lugar del compilador GCC C++, también tengo el compilador Cygwin - C/C++ General -> Rutas y símbolos -> Símbolos -> GNU C++. Haga clic en "Agregar..." y péguelo
__GXX_EXPERIMENTAL_CXX0X__
(asegúrese de agregar y anteponer dos guiones bajos) en "Nombre" y deje "Valor" en blanco. - Presiona Aplicar, haz lo que te pida y luego presiona Aceptar.
También hay una descripción de esto en las preguntas frecuentes de Eclipse: Preguntas frecuentes de Eclipse/Características de C++11 .
Ajuste del eclipse
Instrucción para Eclipse CDT 4.4 Luna y 4.5 Mars
Primero, antes de crear el 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
anexar-std=c++11
Ahora puede crear un proyecto, la configuración depende del tipo de proyecto que creó:
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
Colóquelo -std=c++11
en el cuadro de texto titulado other dialect flags
o seleccione ISO C++11
del Language standard
menú desplegable.
Para proyecto CMake
Genere archivos de proyecto eclipse (dentro de su proyecto)
mkdir build
cd build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..
Luego importe el directorio generado para eclipse como proyecto de eclipse estándar. Haga clic derecho en el proyecto y abra
Properties
-> C/C++ General
-> Preprocessor Include Paths, Marcos etc.
->Providers
habilítelo CDT GCC Build-in Compiler Settings
y muévalo más alto que Contributed PathEntry Containers
(Esto es importante)
Último paso común
recompile, regenere Project
-> C/C++ Index
y reinicie Eclipse.
Actualización 2016:
A partir de gcc 6 ( cambios ), el dialecto C++ predeterminado es C++14. Eso significa que, a menos que necesite explícitamente un dialecto más nuevo o más antiguo, ya no necesita hacer nada con eclipse.
Para Luna y Marte
Esta sección wiki de la comunidad incorpora la respuesta de Trismegistos;
1. Antes de crear el proyecto, configure el analizador de sintaxis de Eclipse:
Ventana -> Preferencias -> C/C++ -> Compilación -> Configuración -> Descubrimiento -> Configuración del compilador integrado CDT GCC
en el cuadro de texto titulado Comando para obtener las especificaciones del compilador, agregue -std=c++14
2. Crear proyecto, la configuración depende del tipo de proyecto que creó:
Para proyecto creado como: Archivo -> Nuevo -> Proyecto -> C/C++ -> Proyecto C++
Haga clic derecho en el proyecto creado y abra
Propiedades -> Compilación C/C++ -> Configuración -> Configuración de herramientas -> Compilador GCC C++ -> Dialecto
Colóquelo -std=c++14
en el cuadro de texto titulado Otras banderas de dialecto o seleccione ISO C++11 en el menú desplegable Estándar de idioma.
Ahora hay una nueva forma de resolver esto sin el truco GXX_EXPERIMENTAL.
Para las versiones más recientes : (Actualmente Juno y Kepler Luna ):
En las versiones más recientes de Juno, la configuración se encuentra en Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> tab Providers -> CDT GCC Builtin Compiler Settings ()
.
Versiones anteriores 2012/2013:
En C/C++ Build (en la configuración del proyecto), busque la ruta de inclusión del preprocesador y vaya a la pestaña Proveedores . Anule la selección de todo excepto la configuración del compilador incorporado CDT GCC. Luego, desetiquete las entradas de configuración de Compartir…. Agregue la opción -std=c++11 al cuadro de texto llamado Comando para obtener las especificaciones del compilador.
Ir a caminos y símbolos. En Símbolos, haga clic en restaurar valores predeterminados y luego aplicar.
Notas:
Eclipse es exigente al presionar Aplicar, debe hacerlo cada vez que sale de una pestaña de configuración.
[Autopromoción]: Escribí mis propias instrucciones más detalladas basadas en lo anterior. http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds
Gracias al usuario Nobody
en https://stackoverflow.com/a/13635080/1149664