6

我正在尝试在 JetBrains CLion 中使用仅限 C++11 的语法编译一些代码,因此我希望禁用 C++98 模式。我按照这个 StackOverflow question的说明进行操作,但无法正常工作。

为了实现这个目标,我去了 ALT + SHIFT + F10 并-std=c++11Program Arguments中传递了参数。

再次构建后,C++98 模式似乎仍处于启用状态。

/cygdrive/c/Users/Zarthus/Documents/test/command.cpp: In constructor 'Command::Command(std::vector<std::basic_string<char> >)':
/cygdrive/c/Users/Zarthus/Documents/test/command.cpp:25:32: error: range-based 'for' loops are not allowed in C++98 mode
     for (std::string command : commands)
                                ^

在代码中

Command::Command(std::vector<std::string> cmds)
{
    for (std::string command : cmds)
    {
         addCommand(command);
    }
}

虽然我相当确定问题不在我的代码中(IdeoneC++11IdeoneC++98 (4.8.1)

图片:CLion 界面

我想象的是编译字符串(每条评论):

C:\cygwin64\bin\cmake.exe --build C:\Users\Zarthus\.clion10\system\cmake\generated\6dd8bed\6dd8bed\Debug --target testProject -- -j 4

所以它似乎没有包含我的内容。

我对其他 JetBrains IDE 的经验并不多,但据我所知,它们大多是相同的。

有人能重现这个吗?我是否应该向 JetBrains 发送反馈,说明这可能无法 100% 工作(它仍然是早期版本)?或者我只是把它搞砸了,这里有用户错误吗?

谢谢!

4

1 回答 1

8

这已通过添加add_definitions(-std=c++11)到末尾CMakeLists.txt而不是在 ALT+SHIFT+F10 的命令行参数中解决。

于 2014-09-17T21:07:41.210 回答