From 410e31c665d6b89c3f1c16408bbecbefde1451d5 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Thu, 17 Aug 2017 09:31:16 +0200 Subject: [PATCH] CppTools: set default -std=c++11 for Qt4 qmake from Qt4 does not provide C++ standard and clang can't properly compile Qt4.8.6 and earlier with c++1z. Behavior in this commit mimics qmake from Qt5 which also provides c++11 as a default standard. Task-number: QTCREATORBUG-16441 Change-Id: I3d29891d6e47f2367f2b3b2bf4be4d86661924e9 Reviewed-by: Nikolai Kosjar --- src/plugins/autotoolsprojectmanager/autotoolsproject.cpp | 6 ++++-- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 6 ++++-- src/plugins/cpptools/cppcodemodelinspectordumper.cpp | 3 ++- src/plugins/cpptools/cppprojectinfogenerator.cpp | 7 +++++-- src/plugins/cpptools/projectpart.h | 3 ++- src/plugins/genericprojectmanager/genericproject.cpp | 6 ++++-- src/plugins/qbsprojectmanager/qbsproject.cpp | 6 ++++-- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 6 ++++-- 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 38257ad7542..e4a89e9edc5 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -275,8 +275,10 @@ void AutotoolsProject::updateCppCodeModel() CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k)) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; + if (qtVersion->qtVersion() <= QtSupport::QtVersionNumber(4,8,6)) + activeQtVersion = CppTools::ProjectPart::Qt4_8_6AndOlder; + else if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) + activeQtVersion = CppTools::ProjectPart::Qt4Latest; else activeQtVersion = CppTools::ProjectPart::Qt5; } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 91aa189e64c..988a39652a9 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -164,8 +164,10 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k)) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; + if (qtVersion->qtVersion() <= QtSupport::QtVersionNumber(4,8,6)) + activeQtVersion = CppTools::ProjectPart::Qt4_8_6AndOlder; + else if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) + activeQtVersion = CppTools::ProjectPart::Qt4Latest; else activeQtVersion = CppTools::ProjectPart::Qt5; } diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp index 3b345491a8c..199f185d639 100644 --- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp +++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp @@ -144,7 +144,8 @@ QString Utils::toString(ProjectPart::QtVersion qtVersion) switch (qtVersion) { CASE_QTVERSION(UnknownQt); CASE_QTVERSION(NoQt); - CASE_QTVERSION(Qt4); + CASE_QTVERSION(Qt4_8_6AndOlder); + CASE_QTVERSION(Qt4Latest); CASE_QTVERSION(Qt5); // no default to get a compiler warning if anything is added } diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp index 422dad8cfdf..bff5d36ec48 100644 --- a/src/plugins/cpptools/cppprojectinfogenerator.cpp +++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp @@ -205,12 +205,15 @@ void ProjectInfoGenerator::createProjectParts(const RawProjectPart &rawProjectPa const ProjectPart::Ptr part = projectPartFromRawProjectPart(rawProjectPart, m_projectUpdateInfo.project); + ProjectPart::LanguageVersion defaultVersion = ProjectPart::LatestCxxVersion; + if (rawProjectPart.qtVersion == ProjectPart::Qt4_8_6AndOlder) + defaultVersion = ProjectPart::CXX11; if (cat.hasCxxSources()) { createProjectPart(rawProjectPart, part, cat.cxxSources(), cat.partName("C++"), - ProjectPart::LatestCxxVersion, + defaultVersion, ProjectPart::NoExtensions); } @@ -219,7 +222,7 @@ void ProjectInfoGenerator::createProjectParts(const RawProjectPart &rawProjectPa part, cat.objcxxSources(), cat.partName("Obj-C++"), - ProjectPart::LatestCxxVersion, + defaultVersion, ProjectPart::ObjectiveCExtensions); } diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h index fa13aed3444..c04a18c61f5 100644 --- a/src/plugins/cpptools/projectpart.h +++ b/src/plugins/cpptools/projectpart.h @@ -80,7 +80,8 @@ public: enum QtVersion { UnknownQt = -1, NoQt, - Qt4, + Qt4_8_6AndOlder, + Qt4Latest, Qt5 }; diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 97d884c8713..11d57bc6b19 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -432,8 +432,10 @@ void GenericProject::refreshCppCodeModel() CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt; if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(activeTarget()->kit())) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - activeQtVersion = CppTools::ProjectPart::Qt4; + if (qtVersion->qtVersion() <= QtSupport::QtVersionNumber(4,8,6)) + activeQtVersion = CppTools::ProjectPart::Qt4_8_6AndOlder; + else if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) + activeQtVersion = CppTools::ProjectPart::Qt4Latest; else activeQtVersion = CppTools::ProjectPart::Qt5; } diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 1685b32e876..dbeb13cb608 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -906,8 +906,10 @@ void QbsProject::updateCppCodeModel() CppTools::ProjectPart::QtVersion qtVersionFromKit = CppTools::ProjectPart::NoQt; if (qtVersion) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - qtVersionFromKit = CppTools::ProjectPart::Qt4; + if (qtVersion->qtVersion() <= QtSupport::QtVersionNumber(4,8,6)) + qtVersionFromKit = CppTools::ProjectPart::Qt4_8_6AndOlder; + else if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) + qtVersionFromKit = CppTools::ProjectPart::Qt4Latest; else qtVersionFromKit = CppTools::ProjectPart::Qt5; } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index b28ae8e54c7..cca96c070ef 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -271,8 +271,10 @@ void QmakeProject::updateCppCodeModel() QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k); ProjectPart::QtVersion qtVersionForPart = ProjectPart::NoQt; if (qtVersion) { - if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) - qtVersionForPart = ProjectPart::Qt4; + if (qtVersion->qtVersion() <= QtSupport::QtVersionNumber(4,8,6)) + qtVersionForPart = ProjectPart::Qt4_8_6AndOlder; + else if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0)) + qtVersionForPart = ProjectPart::Qt4Latest; else qtVersionForPart = ProjectPart::Qt5; }