ENH: Added better error message when TRY_COMPILE does not recognize an extension.

This commit is contained in:
Brad King 2005-04-13 14:43:23 -04:00
parent bf70e83397
commit 925743e1e7

View File

@ -145,27 +145,30 @@ int cmTryCompileCommand::CoreTryCompileCode(
cmSystemTools::ReportLastSystemError(""); cmSystemTools::ReportLastSystemError("");
return -1; return -1;
} }
std::string source = argv[2]; std::string source = argv[2];
const char* lang = mf->GetCMakeInstance()->GetGlobalGenerator()->GetLanguageFromExtension( std::string ext = cmSystemTools::GetFilenameExtension(source);
cmSystemTools::GetFilenameExtension(source).c_str()); const char* lang = (mf->GetCMakeInstance()->GetGlobalGenerator()
->GetLanguageFromExtension(ext.c_str()));
if(lang) if(lang)
{ {
fprintf(fout, "PROJECT(CMAKE_TRY_COMPILE %s)\n", lang); fprintf(fout, "PROJECT(CMAKE_TRY_COMPILE %s)\n", lang);
} }
else else
{ {
cmOStringStream err;
err << "Unknown extension \"" << ext << "\" for file \""
<< source << "\". TRY_COMPILE only works for enabled languages.\n"
<< "Currently enabled languages are:";
std::vector<std::string> langs; std::vector<std::string> langs;
mf->GetCMakeInstance()->GetGlobalGenerator()->GetEnabledLanguages(langs); mf->GetCMakeInstance()->GetGlobalGenerator()->GetEnabledLanguages(langs);
std::string msg = "TRY_COMPILE only works for enabled languages files,"
"\nCurrently enabled languages are:\n";
for(std::vector<std::string>::iterator l = langs.begin(); for(std::vector<std::string>::iterator l = langs.begin();
l != langs.end(); ++l) l != langs.end(); ++l)
{ {
msg += *l; err << " " << *l;
msg += " ";
} }
cmSystemTools::Error("Unknown file format for file: ", source.c_str(), msg.c_str()); err << "\nSee PROJECT command for help enabling other languages.";
cmSystemTools::Error(err.str().c_str());
return -1; return -1;
} }
std::string langFlags = "CMAKE_"; std::string langFlags = "CMAKE_";