summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalVisualStudio7Generator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2002-12-20 17:59:18 (GMT)
committerBrad King <brad.king@kitware.com>2002-12-20 17:59:18 (GMT)
commit4e6ad941e981e81b53876508d17d1c3ef06938f2 (patch)
tree01940cd7e170d0db1c808a9dc381c866d83a03fa /Source/cmGlobalVisualStudio7Generator.cxx
parent309748ff79d827e191e93f8c28f42768dd5d3966 (diff)
downloadCMake-4e6ad941e981e81b53876508d17d1c3ef06938f2.zip
CMake-4e6ad941e981e81b53876508d17d1c3ef06938f2.tar.gz
CMake-4e6ad941e981e81b53876508d17d1c3ef06938f2.tar.bz2
ENH: Visual Studio 6 and 7 generators now set CMAKE_CONFIGURATION_TYPES to be a semicolon-separated list of configurations that will be built.
Diffstat (limited to 'Source/cmGlobalVisualStudio7Generator.cxx')
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx30
1 files changed, 21 insertions, 9 deletions
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 7e62e21..f7a0a45 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -33,11 +33,12 @@ void cmGlobalVisualStudio7Generator::EnableLanguage(const char* lang,
mf->AddDefinition("CMAKE_CFG_INTDIR","$(IntDir)");
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl");
+
+ // Create list of configurations requested by user's cache, if any.
+ this->GenerateConfigurations(mf);
this->cmGlobalGenerator::EnableLanguage(lang, mf);
}
-
-
int cmGlobalVisualStudio7Generator::TryCompile(const char *,
const char *bindir,
const char *projectName,
@@ -150,7 +151,7 @@ void cmGlobalVisualStudio7Generator::SetupTests()
}
}
-void cmGlobalVisualStudio7Generator::GenerateConfigurations()
+void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf)
{
// process the configurations
const char* ct
@@ -163,7 +164,7 @@ void cmGlobalVisualStudio7Generator::GenerateConfigurations()
std::string::size_type endpos = 0;
while(endpos != std::string::npos)
{
- endpos = configTypes.find(' ', start);
+ endpos = configTypes.find_first_of(" ;", start);
std::string config;
std::string::size_type len;
if(endpos != std::string::npos)
@@ -200,13 +201,26 @@ void cmGlobalVisualStudio7Generator::GenerateConfigurations()
m_Configurations.push_back("Debug");
m_Configurations.push_back("Release");
}
+
+ // Reset the entry to have a semi-colon separated list.
+ std::string configs = m_Configurations[0];
+ for(unsigned int i=1; i < m_Configurations.size(); ++i)
+ {
+ configs += ";";
+ configs += m_Configurations[i];
+ }
+
+ mf->AddCacheDefinition(
+ "CMAKE_CONFIGURATION_TYPES",
+ configs.c_str(),
+ "Semicolon separated list of supported configuration types, "
+ "only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
+ "anything else will be ignored.",
+ cmCacheManager::STRING);
}
void cmGlobalVisualStudio7Generator::Generate()
{
- // Generate the possible configuraitons
- this->GenerateConfigurations();
-
// add a special target that depends on ALL projects for easy build
// of Debug only
m_LocalGenerators[0]->GetMakefile()->
@@ -580,8 +594,6 @@ std::string cmGlobalVisualStudio7Generator::CreateGUID(const char* name)
void cmGlobalVisualStudio7Generator::LocalGenerate()
{
- // load the possible configuraitons
- this->GenerateConfigurations();
this->cmGlobalGenerator::LocalGenerate();
}