mirror of
https://github.com/reactos/CMake.git
synced 2024-11-30 23:10:26 +00:00
VS: Do not consider MAP_IMPORTED_CONFIG_<CONFIG> on non-imported targets
Since commit v3.9.0-rc1~309^2 (include_external_msproject: Honor MAP_IMPORTED_CONFIG_<CONFIG>, 2017-04-04) we accidentally honor `MAP_IMPORTED_CONFIG_<CONFIG>` while generating the `.sln` file entries for normal targets. This causes `devenv.com`-driven builds to use the mapping incorrectly for normal targets. Check that a target really comes from `include_external_msproject` before considering the map. Furthermore, when we do use the map, we should only take the first entry if more than one configuration is specified. Otherwise we end up giving VS a configuration name with a `;` in it. Fixes: #17276
This commit is contained in:
parent
ffa164736e
commit
c5b5bb270f
@ -200,10 +200,16 @@ void cmGlobalVisualStudio71Generator::WriteProjectConfigurations(
|
||||
std::string guid = this->GetGUID(name);
|
||||
for (std::vector<std::string>::const_iterator i = configs.begin();
|
||||
i != configs.end(); ++i) {
|
||||
const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" +
|
||||
cmSystemTools::UpperCase(*i));
|
||||
if (dstConfig == CM_NULLPTR) {
|
||||
dstConfig = i->c_str();
|
||||
std::vector<std::string> mapConfig;
|
||||
const char* dstConfig = i->c_str();
|
||||
if (target.GetProperty("EXTERNAL_MSPROJECT")) {
|
||||
if (const char* m = target.GetProperty("MAP_IMPORTED_CONFIG_" +
|
||||
cmSystemTools::UpperCase(*i))) {
|
||||
cmSystemTools::ExpandListArgument(m, mapConfig);
|
||||
if (!mapConfig.empty()) {
|
||||
dstConfig = mapConfig[0].c_str();
|
||||
}
|
||||
}
|
||||
}
|
||||
fout << "\t\t{" << guid << "}." << *i << ".ActiveCfg = " << dstConfig
|
||||
<< "|" << platformName << std::endl;
|
||||
|
@ -354,10 +354,16 @@ void cmGlobalVisualStudio8Generator::WriteProjectConfigurations(
|
||||
std::string guid = this->GetGUID(name);
|
||||
for (std::vector<std::string>::const_iterator i = configs.begin();
|
||||
i != configs.end(); ++i) {
|
||||
const char* dstConfig = target.GetProperty("MAP_IMPORTED_CONFIG_" +
|
||||
cmSystemTools::UpperCase(*i));
|
||||
if (dstConfig == CM_NULLPTR) {
|
||||
dstConfig = i->c_str();
|
||||
std::vector<std::string> mapConfig;
|
||||
const char* dstConfig = i->c_str();
|
||||
if (target.GetProperty("EXTERNAL_MSPROJECT")) {
|
||||
if (const char* m = target.GetProperty("MAP_IMPORTED_CONFIG_" +
|
||||
cmSystemTools::UpperCase(*i))) {
|
||||
cmSystemTools::ExpandListArgument(m, mapConfig);
|
||||
if (!mapConfig.empty()) {
|
||||
dstConfig = mapConfig[0].c_str();
|
||||
}
|
||||
}
|
||||
}
|
||||
fout << "\t\t{" << guid << "}." << *i << "|" << this->GetPlatformName()
|
||||
<< ".ActiveCfg = " << dstConfig << "|"
|
||||
|
Loading…
Reference in New Issue
Block a user