Since commit 6e58a01f4e (Tutorial: Update step 6 style, 2022-10-06) the
`literalinclude` included an extra comment from step 6 instructions.
Fix the include bounds to remove the extra text.
In commit 80f5d28813 (Tutorial: Update step 2 style, 2022-07-25,
v3.25.0-rc1~226^2) we replaced some uses of `USE_MYMATH` with `MY_MATH`.
Restore the former name for consistency with the rest of the tutorial.
Define the entry point to each mode as an option for the `cmake`
program, but reference the options for that mode as part of stand-in
`cmake-<mode>` programs.
4f7a0c25d2 Help: Document BYPASS_PROVIDER keyword for find_package()
76370e06b8 Help: Minor grammar fix for the Using Dependencies manual
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7501
The sections on FetchContent's FIND_PACKAGE_ARGS and on
Dependency Providers only apply to CMake 3.24+, so add
versionadded markers at the start of both sections.
The guide previously only focused on the find_package() command,
with a bias towards libraries. FetchContent was not mentioned at all.
Reorganise and update the existing content. Add new sections to cover
providing dependencies with FetchContent and dependency providers.
Improve discoverability of the guide by mentioning it at the beginning
of the find_package(), FetchContent and dependency provider docs.
Since commit 07223c5c27 (Tutorial: Update Step 5 to work on Windows,
2020-02-18, v3.18.0-rc1~655^2) the logic does not work on non-Windows
platforms when cmake is re-run on an existing build tree. It is also
more complicated than we'd like for a tutorial example. Avoid the need
to consider the `m` library case by performing the check as C++.
Since `check_cxx_symbol_exists` cannot handle overloaded functions
like `exp` and `log`, check with `check_cxx_source_compiles` instead.
This also presents a more general-purpose example in the tutorial.
Fixes: #23524
Provide readers following the tutorial on `cmake.org` a direct link to
download the tutorial's source examples. Previously readers had to
fetch the CMake source tree separately and look for the tutorial source
examples inside it.
Fixes: #22475
Always using `_supported_components` causes conflicts when transitive
dependencies also set this variable, e.g., because the developers
followed these code samples.
An even more general approach could be to set
`_${CMAKE_FIND_PACKAGE_NAME}_supported_components` instead, but such a
change should then be applied to other variables for consistency.
Fixes: #23112
Divert LCC compiler as a new one, instead of treating it as GNU.
Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been
passing checks for GNU compilers, so it has been identified as GNU.
Now, with intent of seriously upstreaming its support, it has been
added as a separate LCC compiler, and its version displays not a
supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead
of GNU 7.3.0).
This commit adds its support for detection, and also converts basically
every check like 'is this compiler GNU?' to 'is this compiler GNU or
LCC?'. The only places where this check is untouched, is where it
regards other platforms where LCC is unavailable (primarily non-Linux),
and where it REALLY differs from GNU compiler.
Note: this transition may break software that are already ported to
Elbrus, but hardly relies that LCC will be detected as GNU; still such
software is not known.
Small changes to the text and CMake code for the fourth step of the
tutorial:
* Remove parameter from endfunction call
* Standardize on "binary directory" for test location
* Add additional information about a Release build.
Issue: #22663