try_compile: Restore COPY_FILE with CMAKE_TRY_COMPILE_CONFIGURATION

Since commit 0c141b0393 (try_compile: Record output location instead of
reverse computing it, 2022-08-31, v3.25.0-rc1~154^2) we always look for
the "Debug" configuration's output binary from the test project.
Restore looking for the `CMAKE_TRY_COMPILE_CONFIGURATION`.

Fixes: #24180
This commit is contained in:
Brad King 2022-11-22 11:19:39 -05:00
parent 0a802d0f9e
commit 80fc564dd7
3 changed files with 20 additions and 4 deletions

View File

@ -206,6 +206,8 @@ auto const TryRunSourcesArgParser =
auto const TryRunOldArgParser = makeTryRunParser(TryCompileOldArgParser);
#undef BIND_LANG_PROPS
std::string const TryCompileDefaultConfig = "DEBUG";
}
Arguments cmCoreTryCompile::ParseArgs(
@ -706,9 +708,9 @@ bool cmCoreTryCompile::TryCompileCode(Arguments& arguments,
CM_FALLTHROUGH;
case cmPolicies::NEW: {
// NEW behavior is to pass config-specific compiler flags.
static std::string const cfgDefault = "DEBUG";
std::string const cfg =
!tcConfig.empty() ? cmSystemTools::UpperCase(tcConfig) : cfgDefault;
std::string const cfg = !tcConfig.empty()
? cmSystemTools::UpperCase(tcConfig)
: TryCompileDefaultConfig;
for (std::string const& li : testLangs) {
std::string const langFlagsCfg =
cmStrCat("CMAKE_", li, "_FLAGS_", cfg);
@ -1199,7 +1201,12 @@ void cmCoreTryCompile::FindOutputFile(const std::string& targetName)
tmpOutputFile += targetName;
if (this->Makefile->GetGlobalGenerator()->IsMultiConfig()) {
tmpOutputFile += "_DEBUG";
std::string const tcConfig =
this->Makefile->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION");
std::string const cfg = !tcConfig.empty()
? cmSystemTools::UpperCase(tcConfig)
: TryCompileDefaultConfig;
tmpOutputFile = cmStrCat(tmpOutputFile, '_', cfg);
}
tmpOutputFile += "_loc";

View File

@ -0,0 +1,8 @@
enable_language(C)
set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
include(${CMAKE_CURRENT_SOURCE_DIR}/${try_compile_DEFS})
try_compile(RESULT
${try_compile_bindir_or_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src.c
COPY_FILE "${CMAKE_CURRENT_BINARY_DIR}/out.bin"
)

View File

@ -23,6 +23,7 @@ run_cmake(TryRunArgs)
run_cmake(BuildType)
run_cmake(BuildTypeAsFlag)
run_cmake(OutputDirAsFlag)
run_cmake(CopyFileConfig)
run_cmake(EnvConfig)