16

友人とクロスプラットフォーム プロジェクトをプログラミングする準備をしています。IDE とツールチェーンとしてそれぞれ Qt と gcc を使用することにしました。彼は Linux で作業しており、私は Windows で作業しています。

ただし、Linux の gcc が Windows の gcc であるとは限りません。より具体的には、Windows 上の Qt は gcc 4.4 で mingw をインストールし、私の友人は gcc 4.7 を使用しています。それで、Windows用の最新のgccバージョンを入手しようとしました。

Qt の現在のバージョンは 5 で、gcc 4.7 を使用して、このサイトからダウンロードしてインストールします: http://www.equation.com/servlet/equation.cmd?fa=fortran

私は C:\QtSDK\mingw にインストールし、Qt インストールから存在するすべてのファイルを単純に上書きしました。近道をすれば、Qt で何も再構成する必要はないと考えました。

ただし、コンパイラ フラグを使用しても、次のようになります。

QMAKE_CXXFLAGS += -std=c++0x (Qt 4.7)

CONFIG   += c++11 (Qt5)

IDE またはツールチェーンは、単純な範囲ベースの for ループをコンパイルできません。

int main(int argc, char *argv[])
{
    int my_array[5] = {1, 2, 3, 4, 5};
    for (auto x : my_array)
        std::cout << x << std::endl;

    return 0;
}

または初期化リスト:

int main(int argc, char *argv[])
{
    QVector<int> testsData { 1, 2, 10, 42, 50, 123  };
    QStringList options = { QLatin1String("foo"), QLatin1String("bar")  };

    return 0;
}

ただし、gcc 4.7 の実装の詳細を見ると、これらの機能とそれ以上の機能の両方がすぐに利用できるはずです。

gcc と Qt for Windows を使用しようとした人はいますか? もしそうなら、どうやってそれを機能させましたか?gcc 4.6 または 4.7 を使用したソリューションが欲しいのですが、それがまったく不可能な場合はそれ以下で解決します。

あるいは、C++11 の機能を利用する Linux および Windows 用の開発環境はありますか? それがうまくいくなら、私はQt以外のものでも解決します...

ソースを使用しました:

Qt の C++0x (Qt 4.7-4.8)

Qt5 の C++11

4

2 に答える 2

13
QMAKE_CXXFLAGS += -std=c++0x

MinGW コンパイラを使用していないため、エラーが発生します。"D9002: 不明なオプションを無視しています-std=c++0x" は、MSVC コンパイラからのエラーです。

QtCreator で、プロジェクト タブ (左側) に移動し、使用しているツールチェーンを変更します。MinGW が自動検出されない場合は、管理ボタンをクリックして自分で追加する必要があります。

于 2012-06-16T18:52:12.587 に答える
10

アップデート:

このリンクによると:https ://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects

これを行うことが可能になりました:

CONFIG += c++11

また

CONFIG += c++14

また、今後のQt5.7ではデフォルトでC++ 11コンパイラが必要になり、古い非C++11コンパイラのサポートが終了します。

古い更新:

C ++11を有効にするには-GCC4.7以降が必要です。

qmakeビルドシステム:

QMAKE_CXXFLAGS += -std=c++11

qbsビルドシステム:

cpp.cxxLanguageVersion: "c++11"

C ++14を有効にするには-GCC4.9以降が必要です。

qmakeビルドシステム:

QMAKE_CXXFLAGS += -std=c++14

qbsビルドシステム:

cpp.cxxLanguageVersion: "c++14"

注:「c ++ 11」、「c++14」などでは大文字と小文字が区別されることに注意してください。


廃止されたバージョン:

qbsビルドシステム:

cpp.cxxFlags: "-std=c++11"
cpp.cxxFlags: "-std=c++14"

古いバージョン:

GCC4.7がQt5に推奨されるようになりました。GCC 4.7では、QMAKE_CXXFLAGS + = -std = c++11を使用できます。

編集: GCC 4.9では、次のフラグを渡すことでC ++14を有効にできるようになりました:QMAKE_CXXFLAGS + = -std = c + 11

于 2012-12-09T09:43:56.237 に答える