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:
parent
0a802d0f9e
commit
80fc564dd7
@ -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";
|
||||
|
||||
|
8
Tests/RunCMake/try_compile/CopyFileConfig.cmake
Normal file
8
Tests/RunCMake/try_compile/CopyFileConfig.cmake
Normal 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"
|
||||
)
|
@ -23,6 +23,7 @@ run_cmake(TryRunArgs)
|
||||
run_cmake(BuildType)
|
||||
run_cmake(BuildTypeAsFlag)
|
||||
run_cmake(OutputDirAsFlag)
|
||||
run_cmake(CopyFileConfig)
|
||||
|
||||
run_cmake(EnvConfig)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user