CppTools: Move QtVersion and BuildTargetType

QtVersion to utils/cpplanguage_details.h which already contains similar
flags.

BuildTargetType to ProjectExplorer, next to BuildTargetInfo (but not in the
same header to not pull that in everywhere).

Removes dependency on ProjectPart from RawProjectPart.

Change-Id: I5791065e4266f20c2657ee4b1b594df04b238a1c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Eike Ziller
2019-08-28 13:04:16 +02:00
parent a0352f24d0
commit 8452264a18
27 changed files with 107 additions and 80 deletions

View File

@@ -656,7 +656,7 @@ void CompilerOptionsBuilder::addWrappedQtHeadersIncludePath(QStringList &list) c
static QString wrappedQtHeadersPath = resourcePath + "/cplusplus/wrappedQtHeaders";
QTC_ASSERT(QDir(wrappedQtHeadersPath).exists(), return;);
if (m_projectPart.qtVersion != ProjectPart::NoQt) {
if (m_projectPart.qtVersion != Utils::QtVersion::None) {
const QString wrappedQtCoreHeaderPath = wrappedQtHeadersPath + "/QtCore";
list.append({includeUserPathOption,
QDir::toNativeSeparators(wrappedQtHeadersPath),

View File

@@ -148,23 +148,27 @@ QString Utils::toString(::Utils::LanguageExtensions languageExtension)
return result;
}
QString Utils::toString(ProjectPart::QtVersion qtVersion)
QString Utils::toString(::Utils::QtVersion qtVersion)
{
#define CASE_QTVERSION(x) case ProjectPart::x: return QLatin1String(#x)
#define CASE_QTVERSION(x) \
case ::Utils::QtVersion::x: \
return QLatin1String(#x)
switch (qtVersion) {
CASE_QTVERSION(UnknownQt);
CASE_QTVERSION(NoQt);
CASE_QTVERSION(Qt4);
CASE_QTVERSION(Qt5);
// no default to get a compiler warning if anything is added
CASE_QTVERSION(Unknown);
CASE_QTVERSION(None);
CASE_QTVERSION(Qt4);
CASE_QTVERSION(Qt5);
// no default to get a compiler warning if anything is added
}
#undef CASE_QTVERSION
return QString();
}
QString Utils::toString(ProjectPart::BuildTargetType buildTargetType)
QString Utils::toString(ProjectExplorer::BuildTargetType buildTargetType)
{
#define CASE_BUILDTARGETTYPE(x) case ProjectPart::x: return QLatin1String(#x)
#define CASE_BUILDTARGETTYPE(x) \
case ProjectExplorer::BuildTargetType::x: \
return QLatin1String(#x)
switch (buildTargetType) {
CASE_BUILDTARGETTYPE(Unknown);
CASE_BUILDTARGETTYPE(Executable);

View File

@@ -50,8 +50,8 @@ struct CPPTOOLS_EXPORT Utils
static QString toString(ProjectExplorer::HeaderPathType type);
static QString toString(::Utils::LanguageVersion languageVersion);
static QString toString(::Utils::LanguageExtensions languageExtension);
static QString toString(CppTools::ProjectPart::QtVersion qtVersion);
static QString toString(CppTools::ProjectPart::BuildTargetType buildTargetType);
static QString toString(::Utils::QtVersion qtVersion);
static QString toString(ProjectExplorer::BuildTargetType buildTargetType);
static QString toString(const QVector<CppTools::ProjectFile> &projectFiles);
static QString toString(CppTools::ProjectFile::Kind kind);
static QString toString(CPlusPlus::Kind kind);

View File

@@ -48,7 +48,7 @@ public:
ProjectExplorer::ToolChain *cToolChain = nullptr;
ProjectExplorer::ToolChain *cxxToolChain = nullptr;
ProjectPart::QtVersion projectPartQtVersion = ProjectPart::NoQt;
Utils::QtVersion projectPartQtVersion = Utils::QtVersion::None;
QString sysRootPath;
};

View File

@@ -1159,7 +1159,7 @@ ProjectPart::Ptr CppModelManager::fallbackProjectPart()
part->languageExtensions &= ~Utils::LanguageExtensions(
Utils::LanguageExtension::ObjectiveC);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->updateLanguageFeatures();
return part;

View File

@@ -108,7 +108,7 @@ public:
projectInfo = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
foreach (const QString &file, projectFiles) {
ProjectFile projectFile(file, ProjectFile::classify(file));
part->files.append(projectFile);
@@ -184,7 +184,7 @@ void CppToolsPlugin::test_modelmanager_paths_are_clean()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->projectMacros = {ProjectExplorer::Macro("OH_BEHAVE", "-1")};
part->headerPaths = {{testDataDir.includeDir(false), HeaderPathType::User},
{testDataDir.frameworksDir(false), HeaderPathType::Framework}};
@@ -214,7 +214,7 @@ void CppToolsPlugin::test_modelmanager_framework_headers()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->projectMacros = {{"OH_BEHAVE", "-1"}};
part->headerPaths = {{testDataDir.includeDir(false), HeaderPathType::User},
{testDataDir.frameworksDir(false), HeaderPathType::Framework}};
@@ -262,7 +262,7 @@ void CppToolsPlugin::test_modelmanager_refresh_also_includes_of_project_files()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->projectMacros = {{"OH_BEHAVE", "-1"}};
part->headerPaths = {{testDataDir.includeDir(false), HeaderPathType::User}};
part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
@@ -318,7 +318,7 @@ void CppToolsPlugin::test_modelmanager_refresh_several_times()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->files.append(ProjectFile(testHeader1, ProjectFile::CXXHeader));
part->files.append(ProjectFile(testHeader2, ProjectFile::CXXHeader));
part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
@@ -337,7 +337,7 @@ void CppToolsPlugin::test_modelmanager_refresh_several_times()
// Simulate project configuration change by having different defines each time.
macros += {"ANOTHER_DEFINE"};
part->projectMacros = macros;
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->files.append(ProjectFile(testHeader1, ProjectFile::CXXHeader));
part->files.append(ProjectFile(testHeader2, ProjectFile::CXXHeader));
part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
@@ -381,7 +381,7 @@ void CppToolsPlugin::test_modelmanager_refresh_test_for_changes()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
pi.appendProjectPart(part);
@@ -417,7 +417,7 @@ void CppToolsPlugin::test_modelmanager_refresh_added_and_purge_removed()
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
part->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
part->files.append(ProjectFile(testHeader1, ProjectFile::CXXHeader));
pi.appendProjectPart(part);
@@ -438,7 +438,7 @@ void CppToolsPlugin::test_modelmanager_refresh_added_and_purge_removed()
// Now add testHeader2 and remove testHeader1
pi = ProjectInfo(project);
ProjectPart::Ptr newPart(new ProjectPart);
newPart->qtVersion = ProjectPart::Qt5;
newPart->qtVersion = Utils::QtVersion::Qt5;
newPart->files.append(ProjectFile(testCpp, ProjectFile::CXXSource));
newPart->files.append(ProjectFile(testHeader2, ProjectFile::CXXHeader));
pi.appendProjectPart(newPart);
@@ -477,7 +477,7 @@ void CppToolsPlugin::test_modelmanager_refresh_timeStampModified_if_sourcefiles_
ProjectInfo pi = ProjectInfo(project);
ProjectPart::Ptr part(new ProjectPart);
part->qtVersion = ProjectPart::Qt5;
part->qtVersion = Utils::QtVersion::Qt5;
foreach (const QString &file, initialProjectFiles)
part->files.append(ProjectFile(file, ProjectFile::CXXSource));
pi = ProjectInfo(project);
@@ -755,7 +755,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_project()
part1->projectFile = QLatin1String("project1.projectfile");
part1->files.append(ProjectFile(main1File, ProjectFile::CXXSource));
part1->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part1->qtVersion = ProjectPart::NoQt;
part1->qtVersion = Utils::QtVersion::None;
part1->projectMacros = {{"SUB1"}};
part1->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
@@ -763,7 +763,7 @@ void CppToolsPlugin::test_modelmanager_defines_per_project()
part2->projectFile = QLatin1String("project1.projectfile");
part2->files.append(ProjectFile(main2File, ProjectFile::CXXSource));
part2->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part2->qtVersion = ProjectPart::NoQt;
part2->qtVersion = Utils::QtVersion::None;
part2->projectMacros = {{"SUB2"}};
part2->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
@@ -819,7 +819,7 @@ void CppToolsPlugin::test_modelmanager_precompiled_headers()
part1->projectFile = QLatin1String("project1.projectfile");
part1->files.append(ProjectFile(main1File, ProjectFile::CXXSource));
part1->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part1->qtVersion = ProjectPart::NoQt;
part1->qtVersion = Utils::QtVersion::None;
part1->precompiledHeaders.append(pch1File);
part1->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
part1->updateLanguageFeatures();
@@ -828,7 +828,7 @@ void CppToolsPlugin::test_modelmanager_precompiled_headers()
part2->projectFile = QLatin1String("project2.projectfile");
part2->files.append(ProjectFile(main2File, ProjectFile::CXXSource));
part2->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part2->qtVersion = ProjectPart::NoQt;
part2->qtVersion = Utils::QtVersion::None;
part2->precompiledHeaders.append(pch2File);
part2->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
part2->updateLanguageFeatures();
@@ -900,13 +900,13 @@ void CppToolsPlugin::test_modelmanager_defines_per_editor()
ProjectPart::Ptr part1(new ProjectPart);
part1->files.append(ProjectFile(main1File, ProjectFile::CXXSource));
part1->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part1->qtVersion = ProjectPart::NoQt;
part1->qtVersion = Utils::QtVersion::None;
part1->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
ProjectPart::Ptr part2(new ProjectPart);
part2->files.append(ProjectFile(main2File, ProjectFile::CXXSource));
part2->files.append(ProjectFile(header, ProjectFile::CXXHeader));
part2->qtVersion = ProjectPart::NoQt;
part2->qtVersion = Utils::QtVersion::None;
part2->headerPaths = {{testDataDirectory.includeDir(false), HeaderPathType::User}};
ProjectInfo pi = ProjectInfo(project);
@@ -985,7 +985,7 @@ void CppToolsPlugin::test_modelmanager_updateEditorsAfterProjectUpdate()
part->project = project;
part->files.append(ProjectFile(fileA, ProjectFile::CXXSource));
part->files.append(ProjectFile(fileB, ProjectFile::CXXSource));
part->qtVersion = ProjectPart::NoQt;
part->qtVersion = Utils::QtVersion::None;
ProjectInfo pi = ProjectInfo(project);
pi.appendProjectPart(part);

View File

@@ -100,7 +100,7 @@ void RawProjectPart::setCallGroupId(const QString &id)
callGroupId = id;
}
void RawProjectPart::setQtVersion(ProjectPart::QtVersion qtVersion)
void RawProjectPart::setQtVersion(Utils::QtVersion qtVersion)
{
this->qtVersion = qtVersion;
}
@@ -143,7 +143,7 @@ void RawProjectPart::setFlagsForCxx(const RawProjectPartFlags &flags)
flagsForCxx = flags;
}
void RawProjectPart::setBuildTargetType(ProjectPart::BuildTargetType type)
void RawProjectPart::setBuildTargetType(ProjectExplorer::BuildTargetType type)
{
buildTargetType = type;
}

View File

@@ -26,8 +26,9 @@
#pragma once
#include "cpptools_global.h"
#include "projectpart.h"
#include <projectexplorer/buildtargettype.h>
#include <projectexplorer/projectexplorer_global.h>
#include <projectexplorer/toolchain.h>
#include <utils/cpplanguage_details.h>
@@ -70,14 +71,14 @@ public:
void setPreCompiledHeaders(const QStringList &preCompiledHeaders);
void setBuildSystemTarget(const QString &target);
void setBuildTargetType(ProjectPart::BuildTargetType type);
void setBuildTargetType(ProjectExplorer::BuildTargetType type);
void setSelectedForBuilding(bool yesno);
void setFlagsForC(const RawProjectPartFlags &flags);
void setFlagsForCxx(const RawProjectPartFlags &flags);
void setMacros(const ProjectExplorer::Macros &macros);
void setQtVersion(ProjectPart::QtVersion qtVersion);
void setQtVersion(Utils::QtVersion qtVersion);
public:
QString displayName;
@@ -97,7 +98,7 @@ public:
// Build system
QString buildSystemTarget;
ProjectPart::BuildTargetType buildTargetType = ProjectPart::BuildTargetType::Unknown;
ProjectExplorer::BuildTargetType buildTargetType = ProjectExplorer::BuildTargetType::Unknown;
bool selectedForBuilding = true;
// Flags
@@ -106,7 +107,7 @@ public:
// Misc
ProjectExplorer::Macros projectMacros;
ProjectPart::QtVersion qtVersion = ProjectPart::UnknownQt;
Utils::QtVersion qtVersion = Utils::QtVersion::Unknown;
};
using RawProjectParts = QVector<RawProjectPart>;

View File

@@ -36,7 +36,7 @@ namespace CppTools {
void ProjectPart::updateLanguageFeatures()
{
const bool hasCxx = languageVersion >= Utils::LanguageVersion::CXX98;
const bool hasQt = hasCxx && qtVersion != NoQt;
const bool hasQt = hasCxx && qtVersion != Utils::QtVersion::None;
languageFeatures.cxx11Enabled = languageVersion >= Utils::LanguageVersion::CXX11;
languageFeatures.cxx14Enabled = languageVersion >= Utils::LanguageVersion::CXX14;
languageFeatures.cxxEnabled = hasCxx;

View File

@@ -29,6 +29,7 @@
#include "cppprojectfile.h"
#include <projectexplorer/buildtargettype.h>
#include <projectexplorer/headerpath.h>
#include <projectexplorer/projectexplorer_global.h>
#include <projectexplorer/projectmacro.h>
@@ -53,24 +54,11 @@ namespace CppTools {
class CPPTOOLS_EXPORT ProjectPart
{
public:
enum QtVersion {
UnknownQt = -1,
NoQt,
Qt4,
Qt5
};
enum ToolChainWordWidth {
WordWidth32Bit,
WordWidth64Bit,
};
enum BuildTargetType {
Unknown,
Executable,
Library
};
using Ptr = QSharedPointer<ProjectPart>;
public:
@@ -97,7 +85,7 @@ public:
::Utils::LanguageVersion languageVersion = ::Utils::LanguageVersion::LatestCxx;
::Utils::LanguageExtensions languageExtensions = ::Utils::LanguageExtension::None;
CPlusPlus::LanguageFeatures languageFeatures;
QtVersion qtVersion = UnknownQt;
::Utils::QtVersion qtVersion = ::Utils::QtVersion::Unknown;
// Files
ProjectFiles files;
@@ -111,7 +99,7 @@ public:
// Build system
QString buildSystemTarget;
BuildTargetType buildTargetType = Unknown;
ProjectExplorer::BuildTargetType buildTargetType = ProjectExplorer::BuildTargetType::Unknown;
bool selectedForBuilding = true;
// ToolChain