restore the environment for cxx and cc in global generator
This commit is contained in:
parent
eff6a20432
commit
384523a315
@ -21,10 +21,46 @@
|
|||||||
|
|
||||||
cmGlobalGenerator::cmGlobalGenerator()
|
cmGlobalGenerator::cmGlobalGenerator()
|
||||||
{
|
{
|
||||||
|
// Save the environment variables CXX and CC
|
||||||
|
m_CXXEnvironment = getenv("CXX");
|
||||||
|
m_CCEnvironment = getenv("CC");
|
||||||
}
|
}
|
||||||
|
|
||||||
cmGlobalGenerator::~cmGlobalGenerator()
|
cmGlobalGenerator::~cmGlobalGenerator()
|
||||||
{
|
{
|
||||||
|
// restore the original environment variables CXX and CC
|
||||||
|
// Restor CC
|
||||||
|
static char envCC[5000];
|
||||||
|
std::string env = "CC=";
|
||||||
|
if(m_CCEnvironment)
|
||||||
|
{
|
||||||
|
env += m_CCEnvironment;
|
||||||
|
}
|
||||||
|
unsigned int size = env.size();
|
||||||
|
if(size > 4999)
|
||||||
|
{
|
||||||
|
size = 4999;
|
||||||
|
}
|
||||||
|
strncpy(envCC, env.c_str(), size);
|
||||||
|
envCC[4999] = 0;
|
||||||
|
putenv(envCC);
|
||||||
|
|
||||||
|
// Restore CXX
|
||||||
|
static char envCXX[5000];
|
||||||
|
env = "CXX=";
|
||||||
|
if(m_CXXEnvironment)
|
||||||
|
{
|
||||||
|
env += m_CXXEnvironment;
|
||||||
|
}
|
||||||
|
size = env.size();
|
||||||
|
if(size > 4999)
|
||||||
|
{
|
||||||
|
size = 4999;
|
||||||
|
}
|
||||||
|
strncpy(envCXX, env.c_str(), size);
|
||||||
|
envCXX[4999] = 0;
|
||||||
|
putenv(envCXX);
|
||||||
|
|
||||||
// Delete any existing cmLocalGenerators
|
// Delete any existing cmLocalGenerators
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for (i = 0; i < m_LocalGenerators.size(); ++i)
|
for (i = 0; i < m_LocalGenerators.size(); ++i)
|
||||||
@ -118,8 +154,13 @@ void cmGlobalGenerator::EnableLanguage(const char* lang,
|
|||||||
static char envCC[5000];
|
static char envCC[5000];
|
||||||
std::string env = "CC=${CMAKE_C_COMPILER}";
|
std::string env = "CC=${CMAKE_C_COMPILER}";
|
||||||
mf->ExpandVariablesInString(env);
|
mf->ExpandVariablesInString(env);
|
||||||
strncpy(envCC, env.c_str(), 4999);
|
unsigned int size = env.size();
|
||||||
envCC[4999] = 0;
|
if(size > 4999)
|
||||||
|
{
|
||||||
|
size = 4999;
|
||||||
|
}
|
||||||
|
strncpy(envCC, env.c_str(), size);
|
||||||
|
envCC[size] = 0;
|
||||||
putenv(envCC);
|
putenv(envCC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,8 +182,13 @@ void cmGlobalGenerator::EnableLanguage(const char* lang,
|
|||||||
if(mf->GetDefinition("CMAKE_CXX_COMPILER"))
|
if(mf->GetDefinition("CMAKE_CXX_COMPILER"))
|
||||||
{
|
{
|
||||||
std::string env = "CXX=${CMAKE_CXX_COMPILER}";
|
std::string env = "CXX=${CMAKE_CXX_COMPILER}";
|
||||||
mf->ExpandVariablesInString(env);
|
mf->ExpandVariablesInString(env);
|
||||||
strncpy(envCXX, env.c_str(), 4999);
|
unsigned int size = env.size();
|
||||||
|
if(size > 4999)
|
||||||
|
{
|
||||||
|
size = 4999;
|
||||||
|
}
|
||||||
|
strncpy(envCXX, env.c_str(), size);
|
||||||
envCXX[4999] = 0;
|
envCXX[4999] = 0;
|
||||||
putenv(envCXX);
|
putenv(envCXX);
|
||||||
}
|
}
|
||||||
|
@ -109,6 +109,8 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<cmStdString, bool> m_LanguageEnabled;
|
std::map<cmStdString, bool> m_LanguageEnabled;
|
||||||
|
const char* m_CXXEnvironment;
|
||||||
|
const char* m_CCEnvironment;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user