How to enable C++11/C++0x support in Eclipse CDT?

后端 未结 17 1513
说谎
说谎 2020-11-22 00:13

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2

This is an example of a piece of C++11 code:

auto text = std::unique_ptr(new char[len]);
相关标签:
17条回答
  • 2020-11-22 00:32

    For the latest (Juno) eclipse cdt the following worked for me, no need to declare __GXX_EXPERIMENTAL_CXX0X__ on myself. This works for the the CDT indexer and as parameter for the compiler:

    "your project name" -> right click -> properties:

    C/C++ General -> Preprocessor Include Paths, Macros etc. -> switch to the tab named "Providers":

    • for "Configuration" select "Release" (and afterwards "debug")

    • switch off all providers and just select "CDT GCC Built-in Compiler Settings"

    • uncheck "Share setting entries between projects (global provider)"

    • in the "Command to get compiler specs:" add "-std=c++11" without the quotes (may work with quotes too)

    • hit apply and close the options

    • rebuild the index

    Now all the c++11 related stuff should be resolved correctly by the indexer.

    win7 x64, latest official eclipse with cdt mingw-w64 gcc 4.7.2 from the mingwbuilds project on sourceforge

    0 讨论(0)
  • 2020-11-22 00:33

    I had the same problem on my Eclipse Juno. These steps solved the problem :

    • Go to Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols].
    • Add the symbol : __cplusplus with the value 201103L
    0 讨论(0)
  • 2020-11-22 00:35
    • right-click the project and go to "Properties"
    • C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags. Put -lm at the end of other flags text box and OK.
    0 讨论(0)
  • 2020-11-22 00:35

    I had a similar problem using Eclipse C++ 2019-03 for a mixed C and C++ project that used std::optional and std::swap. What worked for me was this. In the project Properties->C/C++ Build->Settings->Tool Settings->Cross G++ Compiler, remove -std=gnu++17 from Miscellaneous and put it in Dialect->Other Dialect Flags instead.

    0 讨论(0)
  • 2020-11-22 00:37

    Update 2016:

    As of gcc 6 (changes), the default C++ dialect is C++14. That means that unless you explicitly need a newer or older dialect than than, you don't need to do anything with eclipse anymore.

    For Luna and Mars

    This community wiki section incorporates the answer by Trismegistos;

    1. Before creating project, configure Eclipse syntax parser:

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

    in the text box entitled Command to get compiler specs append -std=c++14 2. Create project, configuration depends on what kind of project you created:

    For project created as: File -> New -> Project -> C/C++ -> C++ Project

    Right click on created project and open

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

    Put -std=c++14 into text box entitled other dialect flags or select ISO C++11 from the Language standard drop down.

    There's now a new way to solve this without the GXX_EXPERIMENTAL hack.

    For most recent versions: (Currently Juno and Kepler Luna):

    Under newer versions of Juno the settings are located at Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> tab Providers -> CDT GCC Builtin Compiler Settings ().

    Older versions 2012/2013:

    1. Under C/C++ Build (at project settings), find the Preprocessor Include Path and go to the Providers Tab. Deselect all except CDT GCC Builtin Compiler Settings. Then untag Share settings entries … . Add the option -std=c++11 to the text box called Command to get compiler specs.

    2. Go to paths and symbols. Under Symbols, click restore defaults, and then apply.


    Notes:

    Eclipse is picky about hitting apply, you need to do it every time you leave a settings tab.

    [Self-promotion]: I wrote my own more detailed instructions based on the above. http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

    Thanks to the user Nobody at https://stackoverflow.com/a/13635080/1149664

    0 讨论(0)
  • 2020-11-22 00:41

    I found this article in the Eclipse forum, just followed those steps and it works for me. I am using Eclipse Indigo 20110615-0604 on Windows with a Cygwin setup.

    • Make a new C++ project
    • Default options for everything
    • Once created, right-click the project and go to "Properties"
    • C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags. Put -std=c++0x (or for newer compiler version -std=c++11 at the end . ... instead of GCC C++ Compiler I have also Cygwin compiler
    • C/C++ General -> Paths and Symbols -> Symbols -> GNU C++. Click "Add..." and paste __GXX_EXPERIMENTAL_CXX0X__ (ensure to append and prepend two underscores) into "Name" and leave "Value" blank.
    • Hit Apply, do whatever it asks you to do, then hit OK.

    There is a description of this in the Eclipse FAQ now as well: Eclipse FAQ/C++11 Features.

    Eclipse image setting

    0 讨论(0)
提交回复
热议问题