diff options
author | Brad King <brad.king@kitware.com> | 2016-04-11 14:45:56 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-04-11 15:25:08 (GMT) |
commit | bd581a373373ee9807fcab35dd3e83334b73174b (patch) | |
tree | c8d918fe75350d5e80ab4533372ecd3b92634a75 /Source | |
parent | 82ef90fcfccb1eaf53e4d15884ff3464aa9072a3 (diff) | |
download | CMake-bd581a373373ee9807fcab35dd3e83334b73174b.zip CMake-bd581a373373ee9807fcab35dd3e83334b73174b.tar.gz CMake-bd581a373373ee9807fcab35dd3e83334b73174b.tar.bz2 |
try_compile: Honor CMAKE_<LANG>_FLAGS_<CONFIG> changes (#16054)
In the `try_compile` source file signature we propagate the caller's
value of `CMAKE_<LANG>_FLAGS` into the test project. Extend this to
propagate `CMAKE_<LANG>_FLAGS_<CONFIG>` too instead of always using the
default value in the test project. This will be useful, for example, to
allow the MSVC runtime library to be changed (e.g. `-MDd` => `-MTd`).
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCoreTryCompile.cxx | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index bf89dcb..cfd31b2 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -353,6 +353,13 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, cmOutputConverter::EscapeForCMake(flags?flags:"").c_str()); fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}" " ${COMPILE_DEFINITIONS}\")\n", li->c_str(), li->c_str()); + static std::string const cfgDefault = "DEBUG"; + std::string const cfg = !tcConfig.empty()? + cmSystemTools::UpperCase(tcConfig) : cfgDefault; + std::string const langFlagsCfg = "CMAKE_" + *li + "_FLAGS_" + cfg; + const char* flagsCfg = this->Makefile->GetDefinition(langFlagsCfg); + fprintf(fout, "set(%s %s)\n", langFlagsCfg.c_str(), + cmOutputConverter::EscapeForCMake(flagsCfg?flagsCfg:"").c_str()); } switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0056)) { |