cmake: Fix --build crash on bad CMAKE_GENERATOR in cache

If we fail to create the generator named by CMAKE_GENERATOR, exit
with an error message instead of crashing.  While at it, fix the
wording of the error message when CMAKE_GENERATOR is not set.

Extend the RunCMake.CommandLine test with cases covering the
"cmake --build" option when the named directory does not provide
a CMakeCache.txt with a valid CMAKE_GENERATOR.
This commit is contained in:
Brad King 2014-06-03 11:36:25 -04:00
parent cbc9a9514d
commit 44e2923f33
10 changed files with 21 additions and 1 deletions

View File

@ -2664,11 +2664,17 @@ int cmake::Build(const std::string& dir,
}
if(!it.Find("CMAKE_GENERATOR"))
{
std::cerr << "Error: could find generator in Cache\n";
std::cerr << "Error: could not find CMAKE_GENERATOR in Cache\n";
return 1;
}
cmsys::auto_ptr<cmGlobalGenerator> gen(
this->CreateGlobalGenerator(it.GetValue()));
if(!gen.get())
{
std::cerr << "Error: could create CMAKE_GENERATOR \""
<< it.GetValue() << "\"\n";
return 1;
}
std::string output;
std::string projName;
if(!it.Find("CMAKE_PROJECT_NAME"))

View File

@ -1,5 +1,12 @@
include(RunCMake)
run_cmake_command(build-no-cache
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR})
run_cmake_command(build-no-generator
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-no-generator)
run_cmake_command(build-bad-generator
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-bad-generator)
if(UNIX)
run_cmake_command(E_create_symlink-missing-dir
${CMAKE_COMMAND} -E create_symlink T missing-dir/L

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1 @@
^Error: could create CMAKE_GENERATOR "Bad Generator"$

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1 @@
^Error: could not load cache$

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1 @@
^Error: could not find CMAKE_GENERATOR in Cache$

View File

@ -0,0 +1 @@
CMAKE_GENERATOR:INTERNAL=Bad Generator