Browse Source

try_compile: Report build dir with --debug-trycompile

When `--debug-trycompile` is enabled, issue a log (with trace) for every
`try_compile` noting what directory is being used for the compilation.
This will make it easier to find the corresponding artifacts.

Closes: #24022
pull/355/head
Matthew Woehlke 3 years ago
committed by Brad King
parent
commit
7e6b2a92a0
  1. 5
      Help/manual/cmake.1.rst
  2. 5
      Help/release/dev/try_compile-signatures.rst
  3. 7
      Source/cmCoreTryCompile.cxx
  4. 11
      Tests/RunCMake/CommandLine/debug-trycompile-stderr.txt
  5. 11
      Tests/RunCMake/try_compile/PlatformVariables-stderr.txt
  6. 11
      Tests/RunCMake/try_compile/WarnDeprecated-stderr.txt

5
Help/manual/cmake.1.rst

@ -292,6 +292,11 @@ Options
is effectively a :command:`try_compile`. Any combination of the two
is subject to the potential issues described.)
.. versionadded:: 3.25
When this option is enabled, every try-compile check prints a log
message reporting the directory in which the check is performed.
.. option:: --debug-output
Put cmake in a debug mode.

5
Help/release/dev/try_compile-signatures.rst

@ -5,4 +5,7 @@ try_compile-signatures
signatures that more consistently use keyword dispatch and do not require a
binary directory to be specified. Additionally, these signatures use a
unique directory for each invocation, which allows multiple outputs to be
preserved when using ``--debug-trycompile``.
preserved when using :option:`--debug-trycompile <cmake --debug-trycompile>`.
* The :option:`cmake --debug-trycompile` option now prints log messages
reporting the directory in which each try-compile check is done.

7
Source/cmCoreTryCompile.cxx

@ -1050,6 +1050,13 @@ bool cmCoreTryCompile::TryCompileCode(Arguments& arguments,
}
}
if (this->Makefile->GetCMakeInstance()->GetDebugTryCompile()) {
auto msg =
cmStrCat("Executing try_compile (", *arguments.CompileResultVariable,
") in:\n ", this->BinaryDirectory);
this->Makefile->IssueMessage(MessageType::LOG, msg);
}
bool erroroc = cmSystemTools::GetErrorOccurredFlag();
cmSystemTools::ResetErrorOccurredFlag();
std::string output;

11
Tests/RunCMake/CommandLine/debug-trycompile-stderr.txt

@ -0,0 +1,11 @@
^CMake Debug Log at [^
]*/Modules/CMakeDetermineCompilerABI.cmake:[0-9]+ \(try_compile\):
Executing try_compile \(CMAKE_C_ABI_COMPILED\) in:
[^
]*/Tests/RunCMake/CommandLine/debug-trycompile-build/CMakeFiles/CMakeScratch/TryCompile-[^/]+
Call Stack \(most recent call first\):
[^
]*/Modules/CMakeTestCCompiler.cmake:[0-9]+ \(CMAKE_DETERMINE_COMPILER_ABI\)
debug-trycompile.cmake:[0-9]+ \(enable_language\)
CMakeLists.txt:[0-9]+ \(include\)

11
Tests/RunCMake/try_compile/PlatformVariables-stderr.txt

@ -0,0 +1,11 @@
^CMake Debug Log at [^
]*/Modules/CMakeDetermineCompilerABI.cmake:[0-9]+ \(try_compile\):
Executing try_compile \(CMAKE_C_ABI_COMPILED\) in:
[^
]*/Tests/RunCMake/try_compile/PlatformVariables-build/CMakeFiles/CMakeScratch/TryCompile-[^/]+
Call Stack \(most recent call first\):
[^
]*/Modules/CMakeTestCCompiler.cmake:[0-9]+ \(CMAKE_DETERMINE_COMPILER_ABI\)
PlatformVariables.cmake:[0-9]+ \(enable_language\)
CMakeLists.txt:[0-9]+ \(include\)

11
Tests/RunCMake/try_compile/WarnDeprecated-stderr.txt

@ -0,0 +1,11 @@
^CMake Debug Log at [^
]*/Modules/CMakeDetermineCompilerABI.cmake:[0-9]+ \(try_compile\):
Executing try_compile \(CMAKE_C_ABI_COMPILED\) in:
[^
]*/Tests/RunCMake/try_compile/WarnDeprecated-build/CMakeFiles/CMakeScratch/TryCompile-[^/]+
Call Stack \(most recent call first\):
[^
]*/Modules/CMakeTestCCompiler.cmake:[0-9]+ \(CMAKE_DETERMINE_COMPILER_ABI\)
WarnDeprecated.cmake:[0-9]+ \(enable_language\)
CMakeLists.txt:[0-9]+ \(include\)
Loading…
Cancel
Save