use xml output quotes for paths
This commit is contained in:
parent
e8c2483b4e
commit
96db798627
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cmMSDotNETGenerator::cmMSDotNETGenerator()
|
cmMSDotNETGenerator::cmMSDotNETGenerator()
|
||||||
{
|
{
|
||||||
// default to building a sln project file
|
// default to building a sln project file
|
||||||
|
@ -533,8 +534,6 @@ void cmMSDotNETGenerator::OutputVCProjFile()
|
||||||
{
|
{
|
||||||
m_LibraryOutputPath += "/";
|
m_LibraryOutputPath += "/";
|
||||||
}
|
}
|
||||||
m_LibraryOutputPath =
|
|
||||||
cmSystemTools::ConvertToOutputPath(m_LibraryOutputPath.c_str());
|
|
||||||
}
|
}
|
||||||
m_ExecutableOutputPath = "";
|
m_ExecutableOutputPath = "";
|
||||||
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH"))
|
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH"))
|
||||||
|
@ -549,25 +548,6 @@ void cmMSDotNETGenerator::OutputVCProjFile()
|
||||||
m_ExecutableOutputPath += "/";
|
m_ExecutableOutputPath += "/";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_ExecutableOutputPath =
|
|
||||||
cmSystemTools::ConvertToOutputPath(m_ExecutableOutputPath.c_str());
|
|
||||||
|
|
||||||
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
|
||||||
std::vector<std::string>::iterator i;
|
|
||||||
for(i = includes.begin(); i != includes.end(); ++i)
|
|
||||||
{
|
|
||||||
std::string tmp = cmSystemTools::ConvertToOutputPath(i->c_str());
|
|
||||||
m_IncludeOptions += ",";
|
|
||||||
// quote if not already quoted
|
|
||||||
if (tmp[0] != '"')
|
|
||||||
{
|
|
||||||
m_IncludeOptions += tmp;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_IncludeOptions += tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the VCProj or set of VCProj's for libraries and executables
|
// Create the VCProj or set of VCProj's for libraries and executables
|
||||||
|
|
||||||
|
@ -739,13 +719,10 @@ void cmMSDotNETGenerator::WriteConfiguration(std::ostream& fout,
|
||||||
fout << "\t\t\t\tAdditionalIncludeDirectories=\"";
|
fout << "\t\t\t\tAdditionalIncludeDirectories=\"";
|
||||||
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
||||||
std::vector<std::string>::iterator i = includes.begin();
|
std::vector<std::string>::iterator i = includes.begin();
|
||||||
if(i != includes.end())
|
|
||||||
{
|
|
||||||
fout << """ << cmSystemTools::ConvertToOutputPath(i->c_str()) << """;
|
|
||||||
}
|
|
||||||
for(;i != includes.end(); ++i)
|
for(;i != includes.end(); ++i)
|
||||||
{
|
{
|
||||||
fout << ";"" << cmSystemTools::ConvertToOutputPath(i->c_str()) << """;
|
std::string ipath = this->ConvertToXMLOutputPath(i->c_str());
|
||||||
|
fout << ipath << ";";
|
||||||
}
|
}
|
||||||
fout << "\"\n";
|
fout << "\"\n";
|
||||||
|
|
||||||
|
@ -823,11 +800,13 @@ void cmMSDotNETGenerator::OutputBuildTool(std::ostream& fout,
|
||||||
switch(target.GetType())
|
switch(target.GetType())
|
||||||
{
|
{
|
||||||
case cmTarget::STATIC_LIBRARY:
|
case cmTarget::STATIC_LIBRARY:
|
||||||
|
{
|
||||||
|
std::string libpath = m_LibraryOutputPath + "$(OutDir)/" + libName + ".lib";
|
||||||
fout << "\t\t\t<Tool\n"
|
fout << "\t\t\t<Tool\n"
|
||||||
<< "\t\t\t\tName=\"VCLibrarianTool\"\n"
|
<< "\t\t\t\tName=\"VCLibrarianTool\"\n"
|
||||||
<< "\t\t\t\t\tOutputFile=\"" << m_LibraryOutputPath << "$(OutDir)"
|
<< "\t\t\t\t\tOutputFile=\"" << this->ConvertToXMLOutputPath(libpath.c_str()) << ".\"/>\n";
|
||||||
<< "/" << libName << ".lib\"/>\n";
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case cmTarget::SHARED_LIBRARY:
|
case cmTarget::SHARED_LIBRARY:
|
||||||
case cmTarget::MODULE_LIBRARY:
|
case cmTarget::MODULE_LIBRARY:
|
||||||
break;
|
break;
|
||||||
|
@ -894,7 +873,7 @@ void cmMSDotNETGenerator::OutputLibraryDirectories(std::ostream& fout,
|
||||||
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
||||||
for(i = libdirs.begin(); i != libdirs.end(); ++i)
|
for(i = libdirs.begin(); i != libdirs.end(); ++i)
|
||||||
{
|
{
|
||||||
std::string lpath = cmSystemTools::ConvertToOutputPath(i->c_str());
|
std::string lpath = *i;
|
||||||
if(lpath[lpath.size()-1] != '/')
|
if(lpath[lpath.size()-1] != '/')
|
||||||
{
|
{
|
||||||
lpath += "/";
|
lpath += "/";
|
||||||
|
@ -905,7 +884,8 @@ void cmMSDotNETGenerator::OutputLibraryDirectories(std::ostream& fout,
|
||||||
{
|
{
|
||||||
fout << ",";
|
fout << ",";
|
||||||
}
|
}
|
||||||
fout << lpath << "\\$(INTDIR)," << lpath;
|
std::string lpathi = lpath + "$(INTDIR)";
|
||||||
|
fout << this->ConvertToXMLOutputPath(lpathi.c_str()) << "," << lpath;
|
||||||
hasone = true;
|
hasone = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -925,7 +905,7 @@ void cmMSDotNETGenerator::OutputLibraries(std::ostream& fout,
|
||||||
{
|
{
|
||||||
lib += ".lib";
|
lib += ".lib";
|
||||||
}
|
}
|
||||||
lib = cmSystemTools::ConvertToOutputPath(lib.c_str());
|
lib = this->ConvertToXMLOutputPath(lib.c_str());
|
||||||
if (j->second == cmTarget::GENERAL
|
if (j->second == cmTarget::GENERAL
|
||||||
|| (j->second == cmTarget::DEBUG && strcmp(configName, "DEBUG") == 0)
|
|| (j->second == cmTarget::DEBUG && strcmp(configName, "DEBUG") == 0)
|
||||||
|| (j->second == cmTarget::OPTIMIZED && strcmp(configName, "DEBUG") != 0))
|
|| (j->second == cmTarget::OPTIMIZED && strcmp(configName, "DEBUG") != 0))
|
||||||
|
@ -1042,7 +1022,7 @@ void cmMSDotNETGenerator::WriteVCProjFile(std::ostream& fout,
|
||||||
if (source != libName || target.GetType() == cmTarget::UTILITY)
|
if (source != libName || target.GetType() == cmTarget::UTILITY)
|
||||||
{
|
{
|
||||||
fout << "\t\t\t<File\n";
|
fout << "\t\t\t<File\n";
|
||||||
std::string d = cmSystemTools::ConvertToOutputPath(source.c_str());
|
std::string d = this->ConvertToXMLOutputPath(source.c_str());
|
||||||
// Tell MS-Dev what the source is. If the compiler knows how to
|
// Tell MS-Dev what the source is. If the compiler knows how to
|
||||||
// build it, then it will.
|
// build it, then it will.
|
||||||
fout << "\t\t\t\tRelativePath=\"" << d << "\">\n";
|
fout << "\t\t\t\tRelativePath=\"" << d << "\">\n";
|
||||||
|
@ -1095,7 +1075,7 @@ void cmMSDotNETGenerator::WriteCustomRule(std::ostream& fout,
|
||||||
for(std::set<std::string>::const_iterator d = depends.begin();
|
for(std::set<std::string>::const_iterator d = depends.begin();
|
||||||
d != depends.end(); ++d)
|
d != depends.end(); ++d)
|
||||||
{
|
{
|
||||||
fout << cmSystemTools::ConvertToOutputPath(d->c_str())
|
fout << this->ConvertToXMLOutputPath(d->c_str())
|
||||||
<< ";";
|
<< ";";
|
||||||
}
|
}
|
||||||
fout << "\"\n";
|
fout << "\"\n";
|
||||||
|
@ -1242,3 +1222,11 @@ void cmMSDotNETGenerator::WriteVCProjFooter(std::ostream& fout)
|
||||||
<< "\t</Globals>\n"
|
<< "\t</Globals>\n"
|
||||||
<< "</VisualStudioProject>\n";
|
<< "</VisualStudioProject>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string cmMSDotNETGenerator::ConvertToXMLOutputPath(const char* path)
|
||||||
|
{
|
||||||
|
std::string ret = cmSystemTools::ConvertToOutputPath(path);
|
||||||
|
cmSystemTools::ReplaceString(ret, "\"", """);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -146,13 +146,12 @@ private:
|
||||||
const char* configName,
|
const char* configName,
|
||||||
const char* libName,
|
const char* libName,
|
||||||
const cmTarget &target);
|
const cmTarget &target);
|
||||||
|
std::string ConvertToXMLOutputPath(const char* path);
|
||||||
private:
|
private:
|
||||||
std::map<cmStdString, cmStdString> m_GUIDMap;
|
std::map<cmStdString, cmStdString> m_GUIDMap;
|
||||||
bool m_BuildSLN;
|
bool m_BuildSLN;
|
||||||
std::string m_LibraryOutputPath;
|
std::string m_LibraryOutputPath;
|
||||||
std::string m_ExecutableOutputPath;
|
std::string m_ExecutableOutputPath;
|
||||||
std::string m_IncludeOptions;
|
|
||||||
std::vector<std::string> m_Configurations;
|
std::vector<std::string> m_Configurations;
|
||||||
std::string m_VCProjHeaderTemplate;
|
std::string m_VCProjHeaderTemplate;
|
||||||
std::string m_VCProjFooterTemplate;
|
std::string m_VCProjFooterTemplate;
|
||||||
|
|
Loading…
Reference in New Issue