如何在Codelite中启用C++ 11功能

Mat*_*ggs 7 c++ c++11 enum-class codelite

下面的代码在Xcode 5和Visual Studio 2013中编译和运行.我有兴趣尝试Codelite,但Codelite不会编译以下程序(因为我在我的项目中使用作用域枚举,所以是一个问题).据我所知,Codelite使用与Xcode相同的编译器.

代码对每个C++ 11有效吗?为什么Codelite无法编译它?

#include <iostream>

namespace abc
{
    namespace xyz
    {
        enum class SampleEnum
        {
            SomeValue = 0,
            SomeOtherValue = 1
        };
    }
}

int main(int argc, char **argv)
{
    abc::xyz::SampleEnum e = abc::xyz::SampleEnum::SomeValue;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是Codelite的构建输出.如果它是乱码,它指向变量实例化中的单词"SampleEnum"并说"期望一个类或命名空间".

/bin/sh -c 'make -j8 -e -f  Makefile'
----------Building project:[ ClangTest - Debug ]----------
codelite-cc /usr/bin/clang++   -c  "/Users/xxx/Desktop/Test/ClangTest/main.cpp" -g -O0 -Wall  -o ./Debug/main.cpp.o -I. -I.
/Users/xxx/Desktop/Test/ClangTest/main.cpp:7:8: warning: scoped enumerations are a C++11 extension [-Wc++11-extensions]
                enum class SampleEnum
                     ^
/Users/xxx/Desktop/Test/ClangTest/main.cpp:17:40: error: expected a class or namespace
    abc::xyz::SampleEnum e = abc::xyz::SampleEnum::SomeValue;
                             ~~~~~~~~~~^
1 warning and 1 error generated.
make[1]: *** [Debug/main.cpp.o] Error 1
make: *** [All] Error 2
2 errors, 1 warnings
Run Code Online (Sandbox Code Playgroud)

Mat*_*ggs 21

有必要将-std = c ++ 11传递给编译器以启用C++ 11功能.以下是在Codelite中执行此操作的步骤:

  • 在工作区视图中右键单击项目.
  • 选择此弹出菜单底部附近的"设置".通用设置 - >编译器 - > C++编译器选项
  • 单击分号分隔的编译器开关列表以显示elipses并单击elipses.
  • 单击-std = c ++ 11的复选框

项目设置窗口的屏幕截图