ImportProject: Read --std settings from vcxproj file
This commit is contained in:
parent
9edca82138
commit
d70911c801
|
@ -334,6 +334,12 @@ unsigned int CppCheck::check(const std::string &path)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::string flags(lang + " ");
|
std::string flags(lang + " ");
|
||||||
|
if (mSettings.standards.cpp == Standards::CPP14)
|
||||||
|
flags += "-std=c++14 ";
|
||||||
|
else if (mSettings.standards.cpp == Standards::CPP17)
|
||||||
|
flags += "-std=c++17 ";
|
||||||
|
else if (mSettings.standards.cpp == Standards::CPP20)
|
||||||
|
flags += "-std=c++20 ";
|
||||||
|
|
||||||
for (const std::string &i: mSettings.includePaths)
|
for (const std::string &i: mSettings.includePaths)
|
||||||
flags += "-I" + i + " ";
|
flags += "-I" + i + " ";
|
||||||
|
@ -401,6 +407,12 @@ unsigned int CppCheck::check(const ImportProject::FileSettings &fs)
|
||||||
temp.mSettings.userDefines += fs.cppcheckDefines();
|
temp.mSettings.userDefines += fs.cppcheckDefines();
|
||||||
temp.mSettings.includePaths = fs.includePaths;
|
temp.mSettings.includePaths = fs.includePaths;
|
||||||
temp.mSettings.userUndefs = fs.undefs;
|
temp.mSettings.userUndefs = fs.undefs;
|
||||||
|
if (fs.standard == "c++14")
|
||||||
|
temp.mSettings.standards.cpp = Standards::CPP14;
|
||||||
|
else if (fs.standard == "c++17")
|
||||||
|
temp.mSettings.standards.cpp = Standards::CPP17;
|
||||||
|
else if (fs.standard == "c++20")
|
||||||
|
temp.mSettings.standards.cpp = Standards::CPP20;
|
||||||
if (fs.platformType != Settings::Unspecified)
|
if (fs.platformType != Settings::Unspecified)
|
||||||
temp.mSettings.platform(fs.platformType);
|
temp.mSettings.platform(fs.platformType);
|
||||||
if (mSettings.clang) {
|
if (mSettings.clang) {
|
||||||
|
|
|
@ -469,6 +469,11 @@ namespace {
|
||||||
if (!additionalIncludePaths.empty())
|
if (!additionalIncludePaths.empty())
|
||||||
additionalIncludePaths += ';';
|
additionalIncludePaths += ';';
|
||||||
additionalIncludePaths += e->GetText();
|
additionalIncludePaths += e->GetText();
|
||||||
|
} else if (std::strcmp(e->Name(), "LanguageStandard") == 0) {
|
||||||
|
if (std::strcmp(e->GetText(), "stdcpp14") == 0)
|
||||||
|
cppstd = Standards::CPP14;
|
||||||
|
else if (std::strcmp(e->GetText(), "stdcpp17") == 0)
|
||||||
|
cppstd = Standards::CPP17;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -508,6 +513,7 @@ namespace {
|
||||||
std::string condition;
|
std::string condition;
|
||||||
std::string preprocessorDefinitions;
|
std::string preprocessorDefinitions;
|
||||||
std::string additionalIncludePaths;
|
std::string additionalIncludePaths;
|
||||||
|
Standards::cppstd_t cppstd = Standards::CPPLatest;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,6 +702,14 @@ void ImportProject::importVcxproj(const std::string &filename, std::map<std::str
|
||||||
for (const ItemDefinitionGroup &i : itemDefinitionGroupList) {
|
for (const ItemDefinitionGroup &i : itemDefinitionGroupList) {
|
||||||
if (!i.conditionIsTrue(p))
|
if (!i.conditionIsTrue(p))
|
||||||
continue;
|
continue;
|
||||||
|
if (i.cppstd == Standards::CPP11)
|
||||||
|
fs.standard = "c++11";
|
||||||
|
else if (i.cppstd == Standards::CPP14)
|
||||||
|
fs.standard = "c++14";
|
||||||
|
else if (i.cppstd == Standards::CPP17)
|
||||||
|
fs.standard = "c++14";
|
||||||
|
else if (i.cppstd == Standards::CPP20)
|
||||||
|
fs.standard = "c++20";
|
||||||
fs.defines += ';' + i.preprocessorDefinitions;
|
fs.defines += ';' + i.preprocessorDefinitions;
|
||||||
additionalIncludePaths += ';' + i.additionalIncludePaths;
|
additionalIncludePaths += ';' + i.additionalIncludePaths;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue