In certain cases, try to guess the source directory, so that you can run cmake or ccmake without specifying source dir
This commit is contained in:
parent
0b7d51d79f
commit
3d4a2fdc52
|
@ -992,7 +992,7 @@ void cmCursesMainForm::HandleInput()
|
||||||
void cmCursesMainForm::LoadCache(const char *)
|
void cmCursesMainForm::LoadCache(const char *)
|
||||||
|
|
||||||
{
|
{
|
||||||
m_CMakeInstance->LoadCache();
|
m_CMakeInstance->LoadCache(true);
|
||||||
m_CMakeInstance->SetCacheArgs(m_Args);
|
m_CMakeInstance->SetCacheArgs(m_Args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -809,7 +809,9 @@ int cmake::Configure()
|
||||||
int cmake::Run(const std::vector<std::string>& args)
|
int cmake::Run(const std::vector<std::string>& args)
|
||||||
{
|
{
|
||||||
// a quick check for args
|
// a quick check for args
|
||||||
if(args.size() == 1 && !cmSystemTools::FileExists("CMakeLists.txt"))
|
if(args.size() == 1 &&
|
||||||
|
!cmSystemTools::FileExists("CMakeLists.txt") &&
|
||||||
|
!cmSystemTools::FileExists("CMakeCache.txt"))
|
||||||
{
|
{
|
||||||
this->Usage(args[0].c_str());
|
this->Usage(args[0].c_str());
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -836,7 +838,7 @@ int cmake::Run(const std::vector<std::string>& args)
|
||||||
m_CMakeCommand = args[0];
|
m_CMakeCommand = args[0];
|
||||||
|
|
||||||
// load the cache
|
// load the cache
|
||||||
this->LoadCache();
|
this->LoadCache(true);
|
||||||
|
|
||||||
// Add any cache args
|
// Add any cache args
|
||||||
this->SetCacheArgs(args);
|
this->SetCacheArgs(args);
|
||||||
|
@ -948,7 +950,7 @@ void cmake::AddDefaultCommands()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmake::LoadCache()
|
int cmake::LoadCache(bool fix_paths)
|
||||||
{
|
{
|
||||||
m_CacheManager->LoadCache(this->GetHomeOutputDirectory());
|
m_CacheManager->LoadCache(this->GetHomeOutputDirectory());
|
||||||
|
|
||||||
|
@ -963,6 +965,38 @@ int cmake::LoadCache()
|
||||||
{
|
{
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( fix_paths && cmSystemTools::FileExists("CMakeCache.txt") )
|
||||||
|
{
|
||||||
|
// If we are in directory that has CMakeCache inside and we are
|
||||||
|
// fixing paths then we might have to modify home directory and
|
||||||
|
// start directory.
|
||||||
|
const char* home = this->GetHomeDirectory();
|
||||||
|
const char* startdirectory = this->GetStartDirectory();
|
||||||
|
const char* cachehome = this->GetCacheDefinition("CMAKE_HOME_DIRECTORY");
|
||||||
|
if ( cachehome && strcmp(home, cachehome) != 0 )
|
||||||
|
{
|
||||||
|
// If cachehome exists (it was in the cache), and the current
|
||||||
|
// home is not the same as the one from cache (which means we
|
||||||
|
// are not doing in source build), then fix home and start
|
||||||
|
// directory.
|
||||||
|
home = cachehome;
|
||||||
|
startdirectory = cachehome;
|
||||||
|
}
|
||||||
|
// If cachehome is not set and cmakelists.txt does not exists,
|
||||||
|
// that means we are doing out of source build and the
|
||||||
|
// cmakecache.txt was edited manually and we cannot find the right
|
||||||
|
// source directory.
|
||||||
|
if ( !cachehome && !cmSystemTools::FileExists("CMakeLists.txt") )
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("Source directory not specified");
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
// Ok, let's set the home and start directory.
|
||||||
|
this->SetHomeDirectory(home);
|
||||||
|
this->SetStartDirectory(startdirectory);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,7 @@ class cmake
|
||||||
* GlobalGenerator. This in turn will read in an process all the CMakeList
|
* GlobalGenerator. This in turn will read in an process all the CMakeList
|
||||||
* files for the tree. It will not produce any actual Makefiles, or
|
* files for the tree. It will not produce any actual Makefiles, or
|
||||||
* workspaces. Generate does that. */
|
* workspaces. Generate does that. */
|
||||||
int LoadCache();
|
int LoadCache(bool fix_paths = false);
|
||||||
|
|
||||||
///! Create a GlobalGenerator
|
///! Create a GlobalGenerator
|
||||||
cmGlobalGenerator* CreateGlobalGenerator(const char* name);
|
cmGlobalGenerator* CreateGlobalGenerator(const char* name);
|
||||||
|
|
Loading…
Reference in New Issue