Я пытаюсь скомпилировать некоторый код, используя только синтаксис C ++ 11 в JetBrains CLion, поэтому я хочу отключить режим C ++ 98. Я следовал инструкциям в соответствии этот вопрос StackOverflow, но я не могу заставить его работать.
Чтобы достичь этой цели, я пошел на ALT + SHIFT + F10 и передал аргумент -std=c++11
в Программные аргументы.
После повторного построения режим 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 ++ 11 против IdeoneC ++ 98 (4.8.1))
Образ: CLion Interface
То, что я представляю, это строка компиляции (согласно комментариям):
C:\cygwin64\bin\cmake.exe --build C:\Users\Zarthus\.clion10\system\cmake\generated\6dd8bed\6dd8bed\Debug --target testProject -- -j 4
Так что, похоже, он не включает мой контент.
У меня нет большого опыта работы с другими IDE JetBrains, но, насколько я могу судить, они в основном одинаковы.
Кто-нибудь может воспроизвести это? Должен ли я отправить отзыв JetBrains о том, что это может не работать на 100% (это все еще ранняя сборка)? Или я просто испортил это и есть ли здесь ошибка пользователя?
Спасибо!
Это было решено путем добавления add_definitions(-std=c++11)
до конца CMakeLists.txt
вместо аргументов командной строки ALT + SHIFT + F10.