cmake: Factor out method to find the CMakeCache.txt file
This commit is contained in:
parent
c73967cb4a
commit
3e58b9af57
|
@ -1046,6 +1046,28 @@ const char* cmake::GetHomeOutputDirectory() const
|
||||||
return this->State->GetBinaryDirectory();
|
return this->State->GetBinaryDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string cmake::FindCacheFile(const std::string& binaryDir) const
|
||||||
|
{
|
||||||
|
std::string cachePath = binaryDir;
|
||||||
|
cmSystemTools::ConvertToUnixSlashes(cachePath);
|
||||||
|
std::string cacheFile = cachePath;
|
||||||
|
cacheFile += "/CMakeCache.txt";
|
||||||
|
if (!cmSystemTools::FileExists(cacheFile.c_str())) {
|
||||||
|
// search in parent directories for cache
|
||||||
|
std::string cmakeFiles = cachePath;
|
||||||
|
cmakeFiles += "/CMakeFiles";
|
||||||
|
if (cmSystemTools::FileExists(cmakeFiles.c_str())) {
|
||||||
|
std::string cachePathFound =
|
||||||
|
cmSystemTools::FileExistsInParentDirectories("CMakeCache.txt",
|
||||||
|
cachePath.c_str(), "/");
|
||||||
|
if (!cachePathFound.empty()) {
|
||||||
|
cachePath = cmSystemTools::GetFilenamePath(cachePathFound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cachePath;
|
||||||
|
}
|
||||||
|
|
||||||
void cmake::SetGlobalGenerator(cmGlobalGenerator* gg)
|
void cmake::SetGlobalGenerator(cmGlobalGenerator* gg)
|
||||||
{
|
{
|
||||||
if (!gg) {
|
if (!gg) {
|
||||||
|
@ -2344,24 +2366,8 @@ int cmake::Build(const std::string& dir, const std::string& target,
|
||||||
std::cerr << "Error: " << dir << " is not a directory\n";
|
std::cerr << "Error: " << dir << " is not a directory\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
std::string cachePath = dir;
|
|
||||||
cmSystemTools::ConvertToUnixSlashes(cachePath);
|
|
||||||
std::string cacheFile = cachePath;
|
|
||||||
cacheFile += "/CMakeCache.txt";
|
|
||||||
if (!cmSystemTools::FileExists(cacheFile.c_str())) {
|
|
||||||
// search in parent directories for cache
|
|
||||||
std::string cmakeFiles = cachePath;
|
|
||||||
cmakeFiles += "/CMakeFiles";
|
|
||||||
if (cmSystemTools::FileExists(cmakeFiles.c_str())) {
|
|
||||||
std::string cachePathFound =
|
|
||||||
cmSystemTools::FileExistsInParentDirectories("CMakeCache.txt",
|
|
||||||
cachePath.c_str(), "/");
|
|
||||||
if (!cachePathFound.empty()) {
|
|
||||||
cachePath = cmSystemTools::GetFilenamePath(cachePathFound);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
std::string cachePath = FindCacheFile(dir);
|
||||||
if (!this->LoadCache(cachePath)) {
|
if (!this->LoadCache(cachePath)) {
|
||||||
std::cerr << "Error: could not load cache\n";
|
std::cerr << "Error: could not load cache\n";
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -193,6 +193,9 @@ public:
|
||||||
return this->GlobalGenerator;
|
return this->GlobalGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///! Return the full path to where the CMakeCache.txt file should be.
|
||||||
|
std::string FindCacheFile(const std::string& binaryDir) const;
|
||||||
|
|
||||||
///! Return the global generator assigned to this instance of cmake
|
///! Return the global generator assigned to this instance of cmake
|
||||||
void SetGlobalGenerator(cmGlobalGenerator*);
|
void SetGlobalGenerator(cmGlobalGenerator*);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue