ENH: Visual Studio 6 and 7 generators now set CMAKE_CONFIGURATION_TYPES to be a semicolon-separated list of configurations that will be built.
This commit is contained in:
parent
309748ff79
commit
4e6ad941e9
|
@ -67,8 +67,8 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio 6")
|
||||||
SET (CMAKE_NO_BUILD_TYPE 1)
|
SET (CMAKE_NO_BUILD_TYPE 1)
|
||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 6")
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 6")
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||||
SET (CMAKE_CONFIGURATION_TYPES "Debug Release MinSizeRel RelWithDebInfo" CACHE STRING
|
SET (CMAKE_CONFIGURATION_TYPES "Debug;Release;MinSizeRel;RelWithDebInfo" CACHE STRING
|
||||||
"Space separated list of supported configuration types, only supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything else will be ignored.")
|
"Semicolon separated list of supported configuration types, only supports Debug, Release, MinSizeRel, and RelWithDebInfo, anything else will be ignored.")
|
||||||
SET (CMAKE_CXX_WARNING_LEVEL "3" CACHE STRING
|
SET (CMAKE_CXX_WARNING_LEVEL "3" CACHE STRING
|
||||||
"Size of stack for programs.")
|
"Size of stack for programs.")
|
||||||
SET (CMAKE_CXX_STACK_SIZE "10000000" CACHE STRING
|
SET (CMAKE_CXX_STACK_SIZE "10000000" CACHE STRING
|
||||||
|
|
|
@ -30,9 +30,40 @@ void cmGlobalVisualStudio6Generator::EnableLanguage(const char* lang,
|
||||||
mf->AddDefinition("CMAKE_CFG_INTDIR","$(IntDir)");
|
mf->AddDefinition("CMAKE_CFG_INTDIR","$(IntDir)");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
|
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl");
|
mf->AddDefinition("CMAKE_GENERATOR_CXX", "cl");
|
||||||
|
this->GenerateConfigurations(mf);
|
||||||
this->cmGlobalGenerator::EnableLanguage(lang, mf);
|
this->cmGlobalGenerator::EnableLanguage(lang, mf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmGlobalVisualStudio6Generator::GenerateConfigurations(cmMakefile* mf)
|
||||||
|
{
|
||||||
|
std::string fname= mf->GetDefinition("CMAKE_ROOT");
|
||||||
|
const char* def= mf->GetDefinition( "MSPROJECT_TEMPLATE_DIRECTORY");
|
||||||
|
if(def)
|
||||||
|
{
|
||||||
|
fname = def;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fname += "/Templates";
|
||||||
|
}
|
||||||
|
fname += "/CMakeVisualStudio6Configurations.cmake";
|
||||||
|
if(!mf->ReadListFile(mf->GetCurrentListFile(), fname.c_str()))
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("Cannot open ", fname.c_str(),
|
||||||
|
". Please copy this file from the main "
|
||||||
|
"CMake/Templates directory and edit it for "
|
||||||
|
"your build configurations.");
|
||||||
|
}
|
||||||
|
else if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES"))
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("CMAKE_CONFIGURATION_TYPES not set by ",
|
||||||
|
fname.c_str(),
|
||||||
|
". Please copy this file from the main "
|
||||||
|
"CMake/Templates directory and edit it for "
|
||||||
|
"your build configurations.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int cmGlobalVisualStudio6Generator::TryCompile(const char *,
|
int cmGlobalVisualStudio6Generator::TryCompile(const char *,
|
||||||
const char *bindir,
|
const char *bindir,
|
||||||
const char *projectName,
|
const char *projectName,
|
||||||
|
|
|
@ -66,6 +66,7 @@ public:
|
||||||
virtual void OutputDSWFile();
|
virtual void OutputDSWFile();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void GenerateConfigurations(cmMakefile* mf);
|
||||||
void SetupTests();
|
void SetupTests();
|
||||||
void WriteDSWFile(std::ostream& fout);
|
void WriteDSWFile(std::ostream& fout);
|
||||||
void WriteDSWHeader(std::ostream& fout);
|
void WriteDSWHeader(std::ostream& fout);
|
||||||
|
|
|
@ -33,11 +33,12 @@ void cmGlobalVisualStudio7Generator::EnableLanguage(const char* lang,
|
||||||
mf->AddDefinition("CMAKE_CFG_INTDIR","$(IntDir)");
|
mf->AddDefinition("CMAKE_CFG_INTDIR","$(IntDir)");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
|
mf->AddDefinition("CMAKE_GENERATOR_CC", "cl");
|
||||||
mf->AddDefinition("CMAKE_GENERATOR_CXX", "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);
|
this->cmGlobalGenerator::EnableLanguage(lang, mf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int cmGlobalVisualStudio7Generator::TryCompile(const char *,
|
int cmGlobalVisualStudio7Generator::TryCompile(const char *,
|
||||||
const char *bindir,
|
const char *bindir,
|
||||||
const char *projectName,
|
const char *projectName,
|
||||||
|
@ -150,7 +151,7 @@ void cmGlobalVisualStudio7Generator::SetupTests()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmGlobalVisualStudio7Generator::GenerateConfigurations()
|
void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf)
|
||||||
{
|
{
|
||||||
// process the configurations
|
// process the configurations
|
||||||
const char* ct
|
const char* ct
|
||||||
|
@ -163,7 +164,7 @@ void cmGlobalVisualStudio7Generator::GenerateConfigurations()
|
||||||
std::string::size_type endpos = 0;
|
std::string::size_type endpos = 0;
|
||||||
while(endpos != std::string::npos)
|
while(endpos != std::string::npos)
|
||||||
{
|
{
|
||||||
endpos = configTypes.find(' ', start);
|
endpos = configTypes.find_first_of(" ;", start);
|
||||||
std::string config;
|
std::string config;
|
||||||
std::string::size_type len;
|
std::string::size_type len;
|
||||||
if(endpos != std::string::npos)
|
if(endpos != std::string::npos)
|
||||||
|
@ -200,13 +201,26 @@ void cmGlobalVisualStudio7Generator::GenerateConfigurations()
|
||||||
m_Configurations.push_back("Debug");
|
m_Configurations.push_back("Debug");
|
||||||
m_Configurations.push_back("Release");
|
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()
|
void cmGlobalVisualStudio7Generator::Generate()
|
||||||
{
|
{
|
||||||
// Generate the possible configuraitons
|
|
||||||
this->GenerateConfigurations();
|
|
||||||
|
|
||||||
// add a special target that depends on ALL projects for easy build
|
// add a special target that depends on ALL projects for easy build
|
||||||
// of Debug only
|
// of Debug only
|
||||||
m_LocalGenerators[0]->GetMakefile()->
|
m_LocalGenerators[0]->GetMakefile()->
|
||||||
|
@ -580,8 +594,6 @@ std::string cmGlobalVisualStudio7Generator::CreateGUID(const char* name)
|
||||||
|
|
||||||
void cmGlobalVisualStudio7Generator::LocalGenerate()
|
void cmGlobalVisualStudio7Generator::LocalGenerate()
|
||||||
{
|
{
|
||||||
// load the possible configuraitons
|
|
||||||
this->GenerateConfigurations();
|
|
||||||
this->cmGlobalGenerator::LocalGenerate();
|
this->cmGlobalGenerator::LocalGenerate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void SetupTests();
|
void SetupTests();
|
||||||
void GenerateConfigurations();
|
void GenerateConfigurations(cmMakefile* mf);
|
||||||
void WriteSLNFile(std::ostream& fout);
|
void WriteSLNFile(std::ostream& fout);
|
||||||
void WriteSLNHeader(std::ostream& fout);
|
void WriteSLNHeader(std::ostream& fout);
|
||||||
void WriteProject(std::ostream& fout,
|
void WriteProject(std::ostream& fout,
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# When the dll templates are changed, this list should be
|
||||||
|
# updated with the list of possible configurations.
|
||||||
|
SET(CMAKE_CONFIGURATION_TYPES Debug Release MinSizeRel RelWithDebInfo)
|
Loading…
Reference in New Issue