2016-10-29 15 views
1

、cmakeの2.8.12.2でのlinuxでQtのプロジェクトをビルドする方法、Qt5.6.2(組み込み版)は、GNUは私がcmake PathToSource -G "Eclipse CDT4 - Unix Makefiles"
とcmakeのを実行した後3.81

私はUbuntuの14.04を使用していますcmakeの

を作ります私はmakeです。私は#error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)." # error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\

Qt5.7.0のソースファイルをダウンロードして問題なくビルドしてインストールします。私はもう一度cmake PathToSource -G "Eclipse CDT4 - Unix Makefiles"、それを行う。 /home/sflee/Documents/Software_dev/3rd_party/Qt5.7.0/include/QtCore/qhash.h:957:10: error: ‘pair’ does not name a type auto pair = qAsConst(*this).equal_range(akey);/home/sflee/Documents/Software_dev/3rd_party/Qt5.7.0/include/QtCore/qbasicatomic.h:285:14: error: ‘Ops’ has not been declared { return Ops::fetchAndAddRelease(_q_value, valueToAdd); }

など、多くのエラーが発生しますか?

答えて

2

Qt 5.7にはC++ 11コンパイラが必要です。 auto pairからその種のエラーが発生した場合、コンパイラがC++ 11コードをコンパイルしていないように見えます。 2つの理由が考えられます

  1. あなただけunder this questionがexplanedとして、あなたのコンパイラに-std=c++11を渡す必要があります。

  2. コンパイラが古すぎます。しかし、同じコンパイラでQt 5.7をコンパイルしたので、これは問題ではありません。

+0

'Qt5.7.0'を' g ++ 4.8.4'でビルドして '-std = C++ 11'を追加します。 Qtが-reduce-relocationsでビルドされている場合は、位置独立コードでコードをビルドする必要があります。 ""コードをコンパイルするには - fPIC(-fPIEで十分ではありません)」 #error "Qtが-reduce-relocations。" \ 'で構築されている場合は、コードを位置独立コードでビルドする必要があります。 /。\ – sflee

+1

さて、 '-std = C++ 11'を追加したのと同じように、プロジェクトコンパイラフラグに' -fPIC'を追加してください。 – hyde

+3

'set(CMAKE_CXX_STANDARD 11)'を使ってCMakeがstdフラグを単独で管理するようにすることもできます。 – Zouch

関連する問題