BUG: Work-around bug in MSVC 6 command line parsing.
This commit is contained in:
parent
3d63c85f75
commit
865c2bc6d6
|
@ -1451,6 +1451,39 @@ void cmLocalGenerator::GetTargetFlags(std::string& linkLibs,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string cmLocalGenerator::ConvertToLinkReference(std::string const& lib)
|
||||||
|
{
|
||||||
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
|
// Work-ardound MSVC 6 command line bug. This block is only needed
|
||||||
|
// on windows when we are really using the MSVC 6.0 compiler command
|
||||||
|
// line.
|
||||||
|
if(this->Makefile->IsOn("MSVC60"))
|
||||||
|
{
|
||||||
|
// Search for the last space.
|
||||||
|
std::string::size_type pos = lib.rfind(' ');
|
||||||
|
if(pos != lib.npos)
|
||||||
|
{
|
||||||
|
// Find the slash after the last space, if any.
|
||||||
|
pos = lib.find('/', pos);
|
||||||
|
|
||||||
|
// Convert the portion of the path with a space to a short path.
|
||||||
|
std::string sp;
|
||||||
|
if(cmSystemTools::GetShortPath(lib.substr(0, pos).c_str(), sp))
|
||||||
|
{
|
||||||
|
// Append the rest of the path with no space.
|
||||||
|
sp += lib.substr(pos);
|
||||||
|
|
||||||
|
// Convert to an output path.
|
||||||
|
return this->Convert(sp.c_str(), NONE, SHELL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Normal behavior.
|
||||||
|
return this->Convert(lib.c_str(), START_OUTPUT, SHELL);
|
||||||
|
}
|
||||||
|
|
||||||
bool cmLocalGenerator::GetLinkerArgs(std::string& rpath,
|
bool cmLocalGenerator::GetLinkerArgs(std::string& rpath,
|
||||||
std::string& linkLibs,
|
std::string& linkLibs,
|
||||||
cmTarget& tgt,
|
cmTarget& tgt,
|
||||||
|
@ -1554,7 +1587,7 @@ bool cmLocalGenerator::GetLinkerArgs(std::string& rpath,
|
||||||
{
|
{
|
||||||
if(li->IsPath)
|
if(li->IsPath)
|
||||||
{
|
{
|
||||||
linkLibs += this->Convert(li->Value.c_str(), START_OUTPUT, SHELL);
|
linkLibs += this->ConvertToLinkReference(li->Value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -327,6 +327,8 @@ protected:
|
||||||
std::string FindRelativePathTopBinary();
|
std::string FindRelativePathTopBinary();
|
||||||
void SetupPathConversions();
|
void SetupPathConversions();
|
||||||
|
|
||||||
|
std::string ConvertToLinkReference(std::string const& lib);
|
||||||
|
|
||||||
/** Check whether the native build system supports the given
|
/** Check whether the native build system supports the given
|
||||||
definition. Issues a warning. */
|
definition. Issues a warning. */
|
||||||
virtual bool CheckDefinition(std::string const& define) const;
|
virtual bool CheckDefinition(std::string const& define) const;
|
||||||
|
|
Loading…
Reference in New Issue