bug fixes for external projects

This commit is contained in:
Bill Hoffman 2004-09-14 14:05:40 -04:00
parent c30e7771ee
commit 32fe8caaef
3 changed files with 48 additions and 9 deletions

View File

@ -204,7 +204,15 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
for(std::vector<std::string>::iterator si = dspnames.begin(); for(std::vector<std::string>::iterator si = dspnames.begin();
l != tgts.end() && si != dspnames.end(); ++l) l != tgts.end() && si != dspnames.end(); ++l)
{ {
if ((l->second.GetType() != cmTarget::INSTALL_FILES) if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
{
cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
// dodgy use of the cmCustomCommand's members to store the
// arguments from the INCLUDE_EXTERNAL_MSPROJECT command
std::vector<std::string> stuff = cc.GetDepends();
this->WriteProjectConfigurations(fout, stuff[0].c_str(), l->second.IsInAll());
}
else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))
{ {
this->WriteProjectConfigurations(fout, si->c_str(), l->second.IsInAll()); this->WriteProjectConfigurations(fout, si->c_str(), l->second.IsInAll());
@ -281,8 +289,11 @@ void cmGlobalVisualStudio71Generator::WriteProjectDepends(std::ostream& fout,
{ {
if(*i != dspname) if(*i != dspname)
{ {
fout << "\t\t{" << this->GetGUID(i->c_str()) << "} = {" std::string name = i->c_str();
<< this->GetGUID(i->c_str()) << "}\n"; if(strncmp(name.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
name.erase(name.begin(), name.begin() + 27);
fout << "\t\t{" << this->GetGUID(name.c_str()) << "} = {"
<< this->GetGUID(name.c_str()) << "}\n";
} }
} }
} }

View File

@ -477,7 +477,15 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout,
for(std::vector<std::string>::iterator si = dspnames.begin(); for(std::vector<std::string>::iterator si = dspnames.begin();
l != tgts.end() && si != dspnames.end(); ++l) l != tgts.end() && si != dspnames.end(); ++l)
{ {
if ((l->second.GetType() != cmTarget::INSTALL_FILES) if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
{
cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
// dodgy use of the cmCustomCommand's members to store the
// arguments from the INCLUDE_EXTERNAL_MSPROJECT command
std::vector<std::string> stuff = cc.GetDepends();
this->WriteProjectConfigurations(fout, stuff[0].c_str(), l->second.IsInAll());
}
else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))
{ {
this->WriteProjectDepends(fout, si->c_str(), dir.c_str(),l->second); this->WriteProjectDepends(fout, si->c_str(), dir.c_str(),l->second);
@ -614,13 +622,33 @@ cmGlobalVisualStudio7Generator::WriteProjectConfigurations(std::ostream& fout,
void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout, void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout,
const char* name, const char* name,
const char* location, const char* location,
const std::vector<std::string>& ) const std::vector<std::string>& depends)
{ {
std::string d = cmSystemTools::ConvertToOutputPath(location); std::string d = cmSystemTools::ConvertToOutputPath(location);
fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \""
<< name << "\", \"" << name << "\", \""
<< d << "\", \"{" << d << "\", \"{"
<< this->GetGUID(name) << "}\"\nEndProject\n"; << this->GetGUID(name)
<< "}\"\n";
if(!depends.empty())
{
fout << "\tProjectSection(ProjectDependencies) = postProject\n";
std::vector<std::string>::const_iterator it;
for(it = depends.begin(); it != depends.end(); ++it)
{
if(it->size() > 0)
{
fout << "\t\t{"
<< this->GetGUID(it->c_str())
<< "} = {"
<< this->GetGUID(it->c_str())
<< "}\n";
}
}
fout << "\tEndProjectSection\n";
}
fout << "EndProject\n";
} }

View File

@ -48,7 +48,7 @@ bool cmIncludeExternalMSProjectCommand::InitialPass(std::vector<std::string> con
utility_name += args[0]; utility_name += args[0];
m_Makefile->AddUtilityCommand(utility_name.c_str(), "echo", "\"Include external project\"", m_Makefile->AddUtilityCommand(utility_name.c_str(), "echo", "\"Include external project\"",
false, name_and_location, depends); true, name_and_location, depends);
} }
#endif #endif