mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-11 20:11:10 -05:00
VS: Verify toolset version= field format more strictly
In commit 5f13168419 (VS: Add option to select the version of the
toolset used by VS 2017, 2018-05-19, v3.12.0-rc1~38^2) we added logic to
verify that the toolset version, such as `14.35`, matches the toolset
name, such as `v143`. Clarify the logic to not construct a temporary
nonsensical toolset name like `v1435`. Also verify the format of the
toolset version more strictly, e.g., to reject `14.350` earlier.
Previously the latter example was only rejected by the `.props` file not
existing.
This commit is contained in:
@@ -218,15 +218,17 @@ bool cmGlobalVisualStudio10Generator::SetGeneratorToolset(
|
|||||||
if (vcPlatformToolsetRegex.find(platformToolset) ||
|
if (vcPlatformToolsetRegex.find(platformToolset) ||
|
||||||
platformToolset == "Test Toolset"_s) {
|
platformToolset == "Test Toolset"_s) {
|
||||||
std::string versionToolset = this->GeneratorToolsetVersion;
|
std::string versionToolset = this->GeneratorToolsetVersion;
|
||||||
cmsys::RegularExpression versionToolsetRegex("^[0-9][0-9]\\.[0-9][0-9]");
|
cmsys::RegularExpression versionToolsetRegex(
|
||||||
|
"^([0-9][0-9])\\.([0-9])[0-9](\\.|$)");
|
||||||
if (versionToolsetRegex.find(versionToolset)) {
|
if (versionToolsetRegex.find(versionToolset)) {
|
||||||
versionToolset = cmStrCat('v', versionToolset.erase(2, 1));
|
versionToolset = cmStrCat('v', versionToolsetRegex.match(1),
|
||||||
|
versionToolsetRegex.match(2));
|
||||||
} else {
|
} else {
|
||||||
// Version not recognized. Clear it.
|
// Version not recognized. Clear it.
|
||||||
versionToolset.clear();
|
versionToolset.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cmHasPrefix(versionToolset, platformToolset)) {
|
if (versionToolset != platformToolset) {
|
||||||
mf->IssueMessage(
|
mf->IssueMessage(
|
||||||
MessageType::FATAL_ERROR,
|
MessageType::FATAL_ERROR,
|
||||||
cmStrCat("Generator\n"
|
cmStrCat("Generator\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user