|
|
@@ -25,6 +25,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
cmMSDotNETGenerator::cmMSDotNETGenerator()
|
|
|
{
|
|
|
// default to building a sln project file
|
|
|
@@ -533,8 +534,6 @@ void cmMSDotNETGenerator::OutputVCProjFile()
|
|
|
{
|
|
|
m_LibraryOutputPath += "/";
|
|
|
}
|
|
|
- m_LibraryOutputPath =
|
|
|
- cmSystemTools::ConvertToOutputPath(m_LibraryOutputPath.c_str());
|
|
|
}
|
|
|
m_ExecutableOutputPath = "";
|
|
|
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH"))
|
|
|
@@ -549,25 +548,6 @@ void cmMSDotNETGenerator::OutputVCProjFile()
|
|
|
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
|
|
|
|
|
|
@@ -739,13 +719,10 @@ void cmMSDotNETGenerator::WriteConfiguration(std::ostream& fout,
|
|
|
fout << "\t\t\t\tAdditionalIncludeDirectories=\"";
|
|
|
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
|
|
std::vector<std::string>::iterator i = includes.begin();
|
|
|
- if(i != includes.end())
|
|
|
- {
|
|
|
- fout << """ << cmSystemTools::ConvertToOutputPath(i->c_str()) << """;
|
|
|
- }
|
|
|
for(;i != includes.end(); ++i)
|
|
|
{
|
|
|
- fout << ";"" << cmSystemTools::ConvertToOutputPath(i->c_str()) << """;
|
|
|
+ std::string ipath = this->ConvertToXMLOutputPath(i->c_str());
|
|
|
+ fout << ipath << ";";
|
|
|
}
|
|
|
fout << "\"\n";
|
|
|
|
|
|
@@ -823,11 +800,13 @@ void cmMSDotNETGenerator::OutputBuildTool(std::ostream& fout,
|
|
|
switch(target.GetType())
|
|
|
{
|
|
|
case cmTarget::STATIC_LIBRARY:
|
|
|
+ {
|
|
|
+ std::string libpath = m_LibraryOutputPath + "$(OutDir)/" + libName + ".lib";
|
|
|
fout << "\t\t\t<Tool\n"
|
|
|
<< "\t\t\t\tName=\"VCLibrarianTool\"\n"
|
|
|
- << "\t\t\t\t\tOutputFile=\"" << m_LibraryOutputPath << "$(OutDir)"
|
|
|
- << "/" << libName << ".lib\"/>\n";
|
|
|
+ << "\t\t\t\t\tOutputFile=\"" << this->ConvertToXMLOutputPath(libpath.c_str()) << ".\"/>\n";
|
|
|
break;
|
|
|
+ }
|
|
|
case cmTarget::SHARED_LIBRARY:
|
|
|
case cmTarget::MODULE_LIBRARY:
|
|
|
break;
|
|
|
@@ -894,7 +873,7 @@ void cmMSDotNETGenerator::OutputLibraryDirectories(std::ostream& fout,
|
|
|
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
|
|
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] != '/')
|
|
|
{
|
|
|
lpath += "/";
|
|
|
@@ -905,7 +884,8 @@ void cmMSDotNETGenerator::OutputLibraryDirectories(std::ostream& fout,
|
|
|
{
|
|
|
fout << ",";
|
|
|
}
|
|
|
- fout << lpath << "\\$(INTDIR)," << lpath;
|
|
|
+ std::string lpathi = lpath + "$(INTDIR)";
|
|
|
+ fout << this->ConvertToXMLOutputPath(lpathi.c_str()) << "," << lpath;
|
|
|
hasone = true;
|
|
|
}
|
|
|
}
|
|
|
@@ -925,7 +905,7 @@ void cmMSDotNETGenerator::OutputLibraries(std::ostream& fout,
|
|
|
{
|
|
|
lib += ".lib";
|
|
|
}
|
|
|
- lib = cmSystemTools::ConvertToOutputPath(lib.c_str());
|
|
|
+ lib = this->ConvertToXMLOutputPath(lib.c_str());
|
|
|
if (j->second == cmTarget::GENERAL
|
|
|
|| (j->second == cmTarget::DEBUG && 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)
|
|
|
{
|
|
|
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
|
|
|
// build it, then it will.
|
|
|
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();
|
|
|
d != depends.end(); ++d)
|
|
|
{
|
|
|
- fout << cmSystemTools::ConvertToOutputPath(d->c_str())
|
|
|
+ fout << this->ConvertToXMLOutputPath(d->c_str())
|
|
|
<< ";";
|
|
|
}
|
|
|
fout << "\"\n";
|
|
|
@@ -1242,3 +1222,11 @@ void cmMSDotNETGenerator::WriteVCProjFooter(std::ostream& fout)
|
|
|
<< "\t</Globals>\n"
|
|
|
<< "</VisualStudioProject>\n";
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+std::string cmMSDotNETGenerator::ConvertToXMLOutputPath(const char* path)
|
|
|
+{
|
|
|
+ std::string ret = cmSystemTools::ConvertToOutputPath(path);
|
|
|
+ cmSystemTools::ReplaceString(ret, "\"", """);
|
|
|
+ return ret;
|
|
|
+}
|