|
|
@@ -1046,6 +1046,28 @@ const char* cmake::GetHomeOutputDirectory() const
|
|
|
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)
|
|
|
{
|
|
|
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";
|
|
|
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)) {
|
|
|
std::cerr << "Error: could not load cache\n";
|
|
|
return 1;
|