Frage

I configured a C++11 project in Eclipse CDT to use gcc-4.7. It is not the default compiler on my system, which does not support C++11. In order for compilation to work, I need to pass the flag -std=c++11 and also include the following header path: /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2

Whenever I use C++11 container types like std::unordered_set or std::unordered_map, the CDT indexer complains: Symbol unordered_set could not be resolved. How can I tell the indexer to resolve these symbols correctly?

This is how I have configured my indexer:

enter image description here

As far as I understand the settings, the indexer is supposed to use the compiler settings from the currently active build configuration. Compilation works fine, so why doesn't indexing, too?

War es hilfreich?

Lösung 3

As described in this forum post:

http://www.eclipse.org/forums/index.php/mv/msg/282618/

  • right-click the project and go to "Properties" C/C++ General -> Paths and Symbols -> Symbols -> GNU C++.
  • Click "Add..." and paste __GXX_EXPERIMENTAL_CXX0X__ into "Name" and leave "Value" blank. Hit Apply, do whatever it asks you to do, then hit OK.

Andere Tipps

Setting up **__GXX_EXPERIMENTAL_CXX0X__** does not help in my case (Jul 2014, Eclipse Kepler 20130919, Ubuntu 12.04).

To fix C++11 syntax highlighting go to:

Project Properties --> C/C++ General --> Paths and Symbols --> Symbols --> GNU C++

and overwrite the symbol (i.e. add new symbol):

__cplusplus

with value

201103L

UPDATED: If you use newer version of Eclispe (as of 2016) and still experience the same problem, try value (as pointed by jose.diego):

201402L

Make sure that indexer is enabled in Project settings (C/C++ general --> Indexer)

Then reindex (Project --> C/C++ Index --> Rebuild)

if the problem still persist reindex once again. It should work now.

I solved this problem recently after some lucky googling.

Click on your project and right-click->Properties

Select "C/C++ General -> Processor Include Paths, Macros etc..."

Select the "Providers" tab

Deselect everything except "CDT User Setting Entries" and "CDT GCC Built-in Compiler Settings"

Click on "CDT GCC Built-in Compiler Settings"

Deselect "Use global provider shared between projects"

Edit the box at the bottom labeled "Command to get compiler specs"

Insert into the command -std=c++11 so it looks something like this:

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

Click Apply and Okay.

enter image description here

That worked for me. You probably need to re-index the project.

Or go to:

  • C/C++ Build->Discovery Options->GCC C++ Compiler

  • add your flags to the Compiler invocation arguments. like -std=c++11 -m32

  • Clear discovered entrys now: click on Clear

  • rebuild the project

After that ALL symbols will be updated with correct values and the indexer should work as intended

The workaround for me, with a project that uses an external builder, was to define the symbol:

__cplusplus

with the value:

201403

in the project's: Paths and Symbols -> Symbols/GNU C++.

This worked in eclipse Kepler CDT Version: 8.3.0.201402142303.

See this guide:

  1. C/C++ Build->Settings->GCC C++ Compiler->Dialect
  2. Choose "ISO C++11 (-std=c++0x)" in "language standard" Language and dialect
  3. Apply and OK
  4. Rebuild the project and it works:)

The follows works in Eclipse C/C++ Oxygen.2 with gcc-5.5.0

Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17

Don't pick up anything in the Language standard dropdown list.

The following configuration helps me to fix the issue indicated in the original question.

Environment: Eclipse(Oxygen.3a Release (4.7.3a)), Cygwin64. In case you have a different version of Cygwin, you can find similar directories as follows.

Step 1: Make sure you have the following two directories:

   C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
   C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include\c++

If you don't see the above two directories, please launch your Cygwin setup program and install gcc-core, gcc-g++ and libgcc1.

Step 2: Copy the directory C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include to C:\cygwin64\usr if you don't see above two include directories.

Step 3: Go to Project Property->C/C++ General->Paths and Symbols Make sure you can see the following two paths are listed

   C:\cygwin64\usr\include
   C:\cygwin64\usr\include\c++

Step 4: Property->C/C++ Build/Settings/ Choose Cygwin PE Parser

Step 5: Property->C/C++ Build/Tool Chain Editor Choose Cygwin GCC

Step 6: Property->C/C++ General/Indexer Choose Enable indexer

Step 7: Project->C/C++ Index->Rebuild

Now your eclipse should be able to see the C++11 types.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top