ENH: Add a findfile routine (as opposed to find executable or library) which doesn't
add any extensions - Borland make needs full paths to certain dependencies otherwise linking doesn't work properly (dependencies aren't checked)
This commit is contained in:
parent
faafcdddbf
commit
ea40b86683
|
@ -923,8 +923,35 @@ std::string cmSystemTools::TemporaryFileName()
|
||||||
risk of setting rights with 0666 */
|
risk of setting rights with 0666 */
|
||||||
return tempnam(0, "cmake");
|
return tempnam(0, "cmake");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the file the given name. Searches the given path and then
|
||||||
|
* the system search path. Returns the full path to the file if it is
|
||||||
|
* found. Otherwise, the empty string is returned.
|
||||||
|
*/
|
||||||
|
std::string cmSystemTools::FindFile(const char* name,
|
||||||
|
const std::vector<std::string>& userPaths)
|
||||||
|
{
|
||||||
|
// Add the system search path to our path.
|
||||||
|
std::vector<std::string> path = userPaths;
|
||||||
|
cmSystemTools::GetPath(path);
|
||||||
|
|
||||||
|
std::string tryPath;
|
||||||
|
for(std::vector<std::string>::const_iterator p = path.begin();
|
||||||
|
p != path.end(); ++p)
|
||||||
|
{
|
||||||
|
tryPath = *p;
|
||||||
|
tryPath += "/";
|
||||||
|
tryPath += name;
|
||||||
|
if(cmSystemTools::FileExists(tryPath.c_str()) &&
|
||||||
|
!cmSystemTools::FileIsDirectory(tryPath.c_str()))
|
||||||
|
{
|
||||||
|
return cmSystemTools::CollapseFullPath(tryPath.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Couldn't find the file.
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find the executable with the given name. Searches the given path and then
|
* Find the executable with the given name. Searches the given path and then
|
||||||
|
@ -947,11 +974,11 @@ std::string cmSystemTools::FindProgram(const char* name,
|
||||||
{
|
{
|
||||||
return cmSystemTools::CollapseFullPath(tryPath.c_str());
|
return cmSystemTools::CollapseFullPath(tryPath.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the system search path to our path.
|
// Add the system search path to our path.
|
||||||
std::vector<std::string> path = userPaths;
|
std::vector<std::string> path = userPaths;
|
||||||
cmSystemTools::GetPath(path);
|
cmSystemTools::GetPath(path);
|
||||||
|
|
||||||
for(std::vector<std::string>::const_iterator p = path.begin();
|
for(std::vector<std::string>::const_iterator p = path.begin();
|
||||||
p != path.end(); ++p)
|
p != path.end(); ++p)
|
||||||
{
|
{
|
||||||
|
@ -970,7 +997,7 @@ std::string cmSystemTools::FindProgram(const char* name,
|
||||||
return cmSystemTools::CollapseFullPath(tryPath.c_str());
|
return cmSystemTools::CollapseFullPath(tryPath.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Couldn't find the program.
|
// Couldn't find the program.
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,6 +205,10 @@ public:
|
||||||
*/
|
*/
|
||||||
static bool IsOff(const char* val);
|
static bool IsOff(const char* val);
|
||||||
|
|
||||||
|
///! Find a file in the system PATH, with optional extra paths.
|
||||||
|
static std::string FindFile(const char* name,
|
||||||
|
const std::vector<std::string>& path= std::vector<std::string>());
|
||||||
|
|
||||||
///! Find an executable in the system PATH, with optional extra paths.
|
///! Find an executable in the system PATH, with optional extra paths.
|
||||||
static std::string FindProgram(const char* name,
|
static std::string FindProgram(const char* name,
|
||||||
const std::vector<std::string>& path= std::vector<std::string>());
|
const std::vector<std::string>& path= std::vector<std::string>());
|
||||||
|
|
Loading…
Reference in New Issue