Há duas coisas que você precisa fazer: primeiro, você precisa configurar seu compilador e, em seguida, configurar o processador de linguagem do CDT. Como você não mencionou qual compilador está usando, assumirei que é o GCC, mas as etapas serão semelhantes para outros compiladores. (Observe que você precisa de um compilador que suporte C ++ 11, é claro.)
Configurar o compilador é bastante simples:
- Clique com o botão direito no seu projeto e clique em Propriedades
- Em C / C ++ Build, clique em Configurações
- Em GCC C ++ Compiler, clique em Miscellaneous
- Na caixa Outros sinalizadores, anexe "-std = c ++ 11" à lista de tokens.
- Clique em Aplicar e OK
Neste ponto, você deve ser capaz de reconstruir seu projeto e colocá-lo em execução. Mas o CDT ainda pode mostrar erros para inclusões do C ++ 11. Veja como você pode resolver isso:
- Clique com o botão direito no seu projeto e clique em Propriedades
- Em C / C ++ Geral, clique em "Pré-processador incluir caminhos, macros"
- Selecione a guia Provedores
- Deve haver um item na lista que diz algo como "GCC Built in Compiler Settings". Selecione esta entrada.
- Desmarque a opção "Usar provedor global ..."
- Abaixo da lista, há uma caixa que diz "Comando para obter especificações do compilador". Anexe "-std = c ++ 0x" a isso.
- Mova o provedor "GCC Built in Compiler Settings" no topo da lista usando o botão 'Move Up' à direita.
- Clique em Aplicar e em OK.
- De volta à sua área de trabalho do Eclipse, selecione o Menu Projeto, Índice C / C ++ e clique em "Resolver inclusões não resolvidas".
-std=c++11
onde você disse para colocar e reconstruí o índice completo, ainda mostra um monte de std :: cout, std :: set não reconhecido, etc ...compiler spec
, e ainda não funciona. std :: shared_ptr e mesmo não reconhecido. Embora funcionasse na máquina mais antiga com Juno.Suporte a C ++ 11 no Eclipse Kepler Service Release 1 (Build id: 20130919-0819)
Na versão mais recente do Eclipse Kepler SR1, você só precisa adicionar -std = c ++ 11
A linha "Comando para obter especificações do compilador:" deve ser semelhante a:
fonte
A partir do CDT 8.3 ( disponível como uma atualização do Kepler ), há uma nova opção de dialeto nas configurações de compilação:
http://wiki.eclipse.org/CDT/User/NewIn83#Build
fonte
Eu uso o Eclipse Kepler e para corrigi-lo, fiz o seguinte:
1 - Clique com o botão direito do mouse no projeto >> Proprietes >> C / C ++ Build :: Settings
2 - Foi para o compilador GCC G ++ >> Diversos >> Outros sinalizadores
Isso resolveu meu problema!
Espero que tenha ajudado!
fonte
Executando o eclipse indigo e o cdt 8.0.2 aqui. Segui todos os guias, mas ainda era necessário definir manualmente a definição do pré-processador para encontrar coisas como std :: unique_ptr. O arquivo de inclusão "memória" verifica isso. Defina __cplusplus como 201103L na guia "Symbols" em "Paths and Symbols" em "C ++ General" nas propriedades do projeto.
fonte
Adicionar o sinalizador de dialeto "-std = c ++ 11" às propriedades do projeto-> C / C ++ Build -> Configurações -> Configurações da ferramenta (GCC C ++ Compiler -> Dialeto) resolveu meu problema no Eclipse Kepler, além das configurações declaradas acima.
fonte
Estou usando o Eclipse Luna e não há "Configurações da ferramenta" em C / C ++ Build -> Configurações. I DID add -std = c ++ 11 a linha de comando do compilador especificações em "++ Geral C / C -> Preprocessor Inclui -> Provedores", como sugerido. Mas isso ainda não satisfazia a capacidade do meu indexador de resolver emplace ().
Então, procurei no arquivo de cabeçalho e descobri que as funções emplace são dependentes de __cplusplus> = 201103L. Então, acabei de adicionar o símbolo do pré-processador "__cplusplus" e dei a ele o valor 201103.
Meio hackeado, mas o indexador está feliz. (E makefiles definem meus sinalizadores de construção, não o projeto eclipse)
fonte
A solução fornecida por MrEricSir só funciona depois de ter o mais recente Eclipse Oxygen CDT instalado. Não funciona para mim com o Mars CDT.
fonte