BUG: use ./ infront of the current directory
This commit is contained in:
parent
46aaf2dae8
commit
b753a6794b
|
@ -65,12 +65,15 @@ void cmLocalGenerator::ConfigureFinalPass()
|
||||||
|
|
||||||
std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p)
|
std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p)
|
||||||
{
|
{
|
||||||
|
// do not use relative paths for network build trees
|
||||||
|
// the network paths do not work
|
||||||
const char* outputDirectory = m_Makefile->GetHomeOutputDirectory();
|
const char* outputDirectory = m_Makefile->GetHomeOutputDirectory();
|
||||||
if ( outputDirectory && *outputDirectory && *(outputDirectory+1) &&
|
if ( outputDirectory && *outputDirectory && *(outputDirectory+1) &&
|
||||||
outputDirectory[0] == '/' && outputDirectory[1] == '/' )
|
outputDirectory[0] == '/' && outputDirectory[1] == '/' )
|
||||||
{
|
{
|
||||||
return cmSystemTools::ConvertToOutputPath(p);
|
return cmSystemTools::ConvertToOutputPath(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The first time this is called, initialize all
|
// The first time this is called, initialize all
|
||||||
// the path ivars that are used. This can not
|
// the path ivars that are used. This can not
|
||||||
// be moved to the constructor because all the paths are not set yet.
|
// be moved to the constructor because all the paths are not set yet.
|
||||||
|
@ -103,6 +106,13 @@ std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p)
|
||||||
|
|
||||||
// Do the work of converting to a relative path
|
// Do the work of converting to a relative path
|
||||||
std::string pathIn = p;
|
std::string pathIn = p;
|
||||||
|
bool ispath = false;
|
||||||
|
if(pathIn.find('/') == pathIn.npos)
|
||||||
|
{
|
||||||
|
return pathIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string ret = pathIn;
|
std::string ret = pathIn;
|
||||||
if(m_CurrentOutputDirectory.size() <= ret.size())
|
if(m_CurrentOutputDirectory.size() <= ret.size())
|
||||||
{
|
{
|
||||||
|
@ -170,6 +180,13 @@ std::string cmLocalGenerator::ConvertToRelativeOutputPath(const char* p)
|
||||||
{
|
{
|
||||||
ret = relpath;
|
ret = relpath;
|
||||||
}
|
}
|
||||||
|
if(ret.size() && ret[0] != '/' && ret[0] != '.')
|
||||||
|
{
|
||||||
|
if(ret.size() > 1 && ret[1] != ':')
|
||||||
|
{
|
||||||
|
ret = std::string("./") + ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
ret = cmSystemTools::ConvertToOutputPath(ret.c_str());
|
ret = cmSystemTools::ConvertToOutputPath(ret.c_str());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1324,7 +1324,7 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
||||||
target += cmSystemTools::GetExecutableExtension();
|
target += cmSystemTools::GetExecutableExtension();
|
||||||
target = this->ConvertToRelativeOutputPath(target.c_str());
|
target = this->ConvertToRelativeOutputPath(target.c_str());
|
||||||
bool needsLocalTarget = false;
|
bool needsLocalTarget = false;
|
||||||
if(target.find('/') != target.npos)
|
if(target.find('/', 2) != target.npos)
|
||||||
{
|
{
|
||||||
needsLocalTarget = true;
|
needsLocalTarget = true;
|
||||||
}
|
}
|
||||||
|
@ -1922,7 +1922,13 @@ BuildInSubDirectoryWindows(std::ostream& fout,
|
||||||
std::string currentDir = dir;
|
std::string currentDir = dir;
|
||||||
cmSystemTools::ConvertToUnixSlashes(currentDir);
|
cmSystemTools::ConvertToUnixSlashes(currentDir);
|
||||||
std::string cdback = "..";
|
std::string cdback = "..";
|
||||||
for(unsigned int i =0; i < currentDir.size(); ++i)
|
unsigned int i = 0;
|
||||||
|
if(currentDir.size() > 2 && currentDir[0] == '.' && currentDir[1] == '/')
|
||||||
|
{
|
||||||
|
// start past ./ if it starts with ./
|
||||||
|
i = 2;
|
||||||
|
}
|
||||||
|
for(; i < currentDir.size(); ++i)
|
||||||
{
|
{
|
||||||
if(currentDir[i] == '/')
|
if(currentDir[i] == '/')
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue