mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 14:08:35 +08:00
VS: Add VS_SOURCE_SETTINGS_<tool> target property
VS_SOURCE_SETTINGS_<tool> is a list of key value pairs that get written as item metadata for any file associated with <tool> for that target. The entire value of VS_SOURCE_SETTINGS_<tool> is evaluated as a generator expression. VS_SETTINGS can override settings specified in this property.
This commit is contained in:
@@ -1967,6 +1967,22 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(Elem& e1,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ParsedToolTargetSettings.find(tool) == ParsedToolTargetSettings.end()) {
|
||||||
|
const char* toolTargetProperty =
|
||||||
|
this->GeneratorTarget->Target->GetProperty("VS_SOURCE_SETTINGS_" +
|
||||||
|
std::string(tool));
|
||||||
|
ConfigToSettings toolTargetSettings;
|
||||||
|
ParseSettingsProperty(toolTargetProperty, toolTargetSettings);
|
||||||
|
|
||||||
|
ParsedToolTargetSettings[tool] = toolTargetSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& configToSetting : ParsedToolTargetSettings[tool]) {
|
||||||
|
for (const auto& setting : configToSetting.second) {
|
||||||
|
toolSettings[configToSetting.first][setting.first] = setting.second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ParseSettingsProperty(sf->GetProperty("VS_SETTINGS"), toolSettings);
|
ParseSettingsProperty(sf->GetProperty("VS_SETTINGS"), toolSettings);
|
||||||
|
|
||||||
if (!toolSettings.empty()) {
|
if (!toolSettings.empty()) {
|
||||||
|
@@ -241,6 +241,7 @@ private:
|
|||||||
using ConfigToSettings =
|
using ConfigToSettings =
|
||||||
std::unordered_map<std::string,
|
std::unordered_map<std::string,
|
||||||
std::unordered_map<std::string, std::string>>;
|
std::unordered_map<std::string, std::string>>;
|
||||||
|
std::unordered_map<std::string, ConfigToSettings> ParsedToolTargetSettings;
|
||||||
bool PropertyIsSameInAllConfigs(const ConfigToSettings& toolSettings,
|
bool PropertyIsSameInAllConfigs(const ConfigToSettings& toolSettings,
|
||||||
const std::string& propName);
|
const std::string& propName);
|
||||||
void ParseSettingsProperty(const char* settingsPropertyValue,
|
void ParseSettingsProperty(const char* settingsPropertyValue,
|
||||||
|
Reference in New Issue
Block a user