diff options
author | Brad King <brad.king@kitware.com> | 2023-01-16 19:32:36 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-01-18 16:37:11 (GMT) |
commit | a78cba51978fbc805993604767c1902a249482ff (patch) | |
tree | b4df0181bf56b68135e52c3745f60ab10c9d229c /Help/command/message.rst | |
parent | 645671d36f5cf0fa411d98a637f4edbc3d896c57 (diff) | |
download | CMake-a78cba51978fbc805993604767c1902a249482ff.zip CMake-a78cba51978fbc805993604767c1902a249482ff.tar.gz CMake-a78cba51978fbc805993604767c1902a249482ff.tar.bz2 |
message: Add CONFIGURE_LOG mode to record a message in the configure log
Provide a replacement for `file(APPEND .../CMake{Output,Error}.log)`
that records messages in the configure log.
Issue: #23200
Diffstat (limited to 'Help/command/message.rst')
-rw-r--r-- | Help/command/message.rst | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Help/command/message.rst b/Help/command/message.rst index 9ac4277..e8a4ea0 100644 --- a/Help/command/message.rst +++ b/Help/command/message.rst @@ -14,6 +14,8 @@ Synopsis `Reporting checks`_ message(<checkState> "message text" ...) + `Configure Log`_ + message(CONFIGURE_LOG <text>...) General messages ^^^^^^^^^^^^^^^^ @@ -194,6 +196,54 @@ Output from the above would appear something like the following:: -- Finding partB - not found -- Finding my things - missing components: B +Configure Log +^^^^^^^^^^^^^ + +.. versionadded:: 3.26 + +.. code-block:: cmake + + message(CONFIGURE_LOG <text>...) + +Record a :ref:`configure-log message event <message configure-log event>` +with the specified ``<text>``. By convention, if the text contains more +than one line, the first line should be a summary of the event. + +This mode is intended to record the details of a system inspection check +or other one-time operation guarded by a cache entry, but that is not +performed using :command:`try_compile` or :command:`try_run`, which +automatically log their details. Projects should avoid calling it every +time CMake runs. For example: + +.. code-block:: cmake + + if (NOT DEFINED MY_CHECK_RESULT) + # Print check summary in configure output. + message(CHECK_START "My Check") + + # ... perform system inspection, e.g., with execute_process ... + + # Cache the result so we do not run the check again. + set(MY_CHECK_RESULT "${MY_CHECK_RESULT}" CACHE INTERNAL "My Check") + + # Record the check details in the cmake-configure-log. + message(CONFIGURE_LOG + "My Check Result: ${MY_CHECK_RESULT}\n" + "${details}" + ) + + # Print check result in configure output. + if(MY_CHECK_RESULT) + message(CHECK_PASS "passed") + else() + message(CHECK_FAIL "failed") + endif() + endif() + +If no project is currently being configured, such as in +:ref:`cmake -P <Script Processing Mode>` script mode, +this command does nothing. + See Also ^^^^^^^^ |