Merge topic 'try_compile-Makefile-config'

052c2ae Document CMAKE_TRY_COMPILE_CONFIGURATION variable
56efc60 Honor CMAKE_TRY_COMPILE_CONFIGURATION in Makefile generators (#10809)
This commit is contained in:
Brad King 2011-01-19 14:28:32 -05:00 committed by CMake Topic Stage
commit 3a1975c529
4 changed files with 27 additions and 2 deletions

View File

@ -1121,6 +1121,14 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"this variable for a target if they are set. "
"Library targets are otherwise placed in this directory.",false,
"Variables that Control the Build");
cm->DefineProperty
("CMAKE_TRY_COMPILE_CONFIGURATION", cmProperty::VARIABLE,
"Build configuration used for try_compile and try_run projects.",
"Projects built by try_compile and try_run are built "
"synchronously during the CMake configuration step. "
"Therefore a specific build configuration must be chosen even "
"if the generated build system supports multiple configurations.",false,
"Variables that Control the Build");
// Variables defined when the a language is enabled These variables will

View File

@ -2718,6 +2718,18 @@ int cmMakefile::TryCompile(const char *srcdir, const char *bindir,
cm.SetStartOutputDirectory(bindir);
cm.SetCMakeCommand(cmakeCommand.c_str());
cm.LoadCache();
if(!gg->IsMultiConfig())
{
if(const char* config =
this->GetDefinition("CMAKE_TRY_COMPILE_CONFIGURATION"))
{
// Tell the single-configuration generator which one to use.
// Add this before the user-provided CMake arguments in case
// one of the arguments is -DCMAKE_BUILD_TYPE=...
cm.AddCacheEntry("CMAKE_BUILD_TYPE", config,
"Build configuration", cmCacheManager::STRING);
}
}
// if cmake args were provided then pass them in
if (cmakeArgs)
{

View File

@ -99,7 +99,9 @@ public:
"Return the success or failure in "
"RESULT_VAR. CMAKE_FLAGS can be used to pass -DVAR:TYPE=VALUE flags "
"to the cmake that is run during the build. "
"";
"Set variable CMAKE_TRY_COMPILE_CONFIGURATION to choose a build "
"configuration."
;
}
cmTypeMacro(cmTryCompileCommand, cmCoreTryCompile);

View File

@ -93,7 +93,10 @@ public:
"that when crosscompiling, the cache variables will have to be set "
"manually to the output of the executable. You can also \"guard\" the "
"calls to try_run with if(CMAKE_CROSSCOMPILING) and provide an "
"easy-to-preset alternative for this case.\n";
"easy-to-preset alternative for this case.\n"
"Set variable CMAKE_TRY_COMPILE_CONFIGURATION to choose a build "
"configuration."
;
}
cmTypeMacro(cmTryRunCommand, cmCoreTryCompile);