Commit 44e2923f authored by Brad King's avatar Brad King
Browse files

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.
parent cbc9a951
...@@ -2664,11 +2664,17 @@ int cmake::Build(const std::string& dir, ...@@ -2664,11 +2664,17 @@ int cmake::Build(const std::string& dir,
} }
if(!it.Find("CMAKE_GENERATOR")) 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; return 1;
} }
cmsys::auto_ptr<cmGlobalGenerator> gen( cmsys::auto_ptr<cmGlobalGenerator> gen(
this->CreateGlobalGenerator(it.GetValue())); this->CreateGlobalGenerator(it.GetValue()));
std::cerr << "Error: could create CMAKE_GENERATOR \""
<< it.GetValue() << "\"\n";
return 1;
std::string output; std::string output;
std::string projName; std::string projName;
if(!it.Find("CMAKE_PROJECT_NAME")) if(!it.Find("CMAKE_PROJECT_NAME"))
include(RunCMake) include(RunCMake)
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR})
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-no-generator)
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-bad-generator)
if(UNIX) if(UNIX)
run_cmake_command(E_create_symlink-missing-dir run_cmake_command(E_create_symlink-missing-dir
${CMAKE_COMMAND} -E create_symlink T missing-dir/L ${CMAKE_COMMAND} -E create_symlink T missing-dir/L
^Error: could create CMAKE_GENERATOR "Bad Generator"$
^Error: could not find CMAKE_GENERATOR in Cache$
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment