VS: Do not accumulate configurations globally (#15577)

Drop the VS >= 7 generator's global Configurations member and instead
lookup configurations using cmMakefile::GetConfigurations where needed.
This avoids accumulating all CMAKE_CONFIGURATION_TYPES values ever
encountered by a project() or enable_language() command and allows
the final value to be used in each directory.  We don't officially
support per-directory CMAKE_CONFIGURATION_TYPES values but we certainly
should not generate configurations not in the final value in the top
level directory.
This commit is contained in:
Brad King
2015-05-20 13:55:21 -04:00
parent 3541fc73a1
commit 2f4bb4e9b0
10 changed files with 119 additions and 176 deletions
+3 -1
View File
@@ -77,6 +77,7 @@ private:
void WriteVCProjFile(std::ostream& fout, const std::string& libName,
cmTarget &tgt);
void WriteConfigurations(std::ostream& fout,
std::vector<std::string> const& configs,
const std::string& libName, cmTarget &tgt);
void WriteConfiguration(std::ostream& fout,
const std::string& configName,
@@ -101,6 +102,7 @@ private:
void WriteVCProjEndGroup(std::ostream& fout);
void WriteCustomRule(std::ostream& fout,
std::vector<std::string> const& configs,
const char* source,
const cmCustomCommand& command,
FCInfo& fcinfo);
@@ -109,7 +111,7 @@ private:
bool WriteGroup(const cmSourceGroup *sg,
cmTarget& target, std::ostream &fout,
const std::string& libName,
std::vector<std::string> *configs);
std::vector<std::string> const& configs);
friend class cmLocalVisualStudio7GeneratorFCInfo;
friend class cmLocalVisualStudio7GeneratorInternals;