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 の経験はあまりありませんが、ほとんど同じであると言えます。

誰でもこれを再現できますか?これが 100% 機能していない可能性がある (まだ初期リリース ビルドである) というフィードバックを JetBrains に送信する必要がありますか? それとも、私はそれを台無しにしていて、ここにユーザーエラーがありますか?

ありがとう!

4

1 に答える 1

8

これは、ALT+SHIFT+F10 のコマンド ライン引数ではなくadd_definitions(-std=c++11)、末尾に追加することで解決されました。CMakeLists.txt

于 2014-09-17T21:07:41.210 に答える