
Since commitffc06c1239
(Teach find_(library|file|path) to get prefixes from PATH, 2015-02-18, v3.3.0-rc1~430^2) we search in `<prefix>/include` and `<prefix>/lib` directories for prefixes with `bin` directories in the `PATH` environment variable. The motivation was to search the installation prefixes of MSYS and MinGW development environments automatically. This behavior can search undesired prefixes that happen to be in the `PATH` for unrelated reasons. It was reverted for non-Windows hosts within a year by commitb30b32a493
(Drop find_(library|file|path) prefixes from PATH on non-Windows, 2016-05-09, v3.6.0-rc1~82^2) but was kept on Windows hosts to support its motivating use case. However, similar problems have since been observed on Windows. For example, commit955d6245c1
(MSVC: Revert "Teach find_library to consider the 'libfoo.a' naming convention", 2022-11-28, v3.25.1~6^2) was primarily due to undesired discovery of libraries in `PATH`-derived prefixes. Since commit5e5132e1b1
(MinGW: Search for packages in standard MSYSTEM environment prefixes, 2023-09-11) we search MSYS and MinGW environments' prefixes explicitly, so `PATH`-derived prefixes are no longer needed for the original motivating use case. Fixes: #24216
44 lines
1.6 KiB
ReStructuredText
44 lines
1.6 KiB
ReStructuredText
find_program
|
|
------------
|
|
|
|
.. |FIND_XXX| replace:: find_program
|
|
.. |NAMES| replace:: NAMES name1 [name2 ...] [NAMES_PER_DIR]
|
|
.. |SEARCH_XXX| replace:: program
|
|
.. |SEARCH_XXX_DESC| replace:: program
|
|
.. |prefix_XXX_SUBDIR| replace:: ``<prefix>/[s]bin``
|
|
.. |entry_XXX_SUBDIR| replace:: ``<entry>/[s]bin``
|
|
|
|
.. |FIND_XXX_REGISTRY_VIEW_DEFAULT| replace:: ``BOTH``
|
|
|
|
.. |FIND_PACKAGE_ROOT_PREFIX_PATH_XXX| replace::
|
|
|FIND_PACKAGE_ROOT_PREFIX_PATH_XXX_SUBDIR|
|
|
.. |CMAKE_PREFIX_PATH_XXX| replace::
|
|
|CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
|
.. |CMAKE_XXX_PATH| replace:: :variable:`CMAKE_PROGRAM_PATH`
|
|
.. |CMAKE_XXX_MAC_PATH| replace:: :variable:`CMAKE_APPBUNDLE_PATH`
|
|
|
|
.. |ENV_CMAKE_PREFIX_PATH_XXX| replace::
|
|
|ENV_CMAKE_PREFIX_PATH_XXX_SUBDIR|
|
|
.. |ENV_CMAKE_XXX_PATH| replace:: :envvar:`CMAKE_PROGRAM_PATH`
|
|
.. |ENV_CMAKE_XXX_MAC_PATH| replace:: :envvar:`CMAKE_APPBUNDLE_PATH`
|
|
|
|
.. |SYSTEM_ENVIRONMENT_PATH_XXX| replace:: The directories in ``PATH`` itself.
|
|
.. |SYSTEM_ENVIRONMENT_PATH_WINDOWS_XXX| replace:: \
|
|
|
|
.. |CMAKE_SYSTEM_PREFIX_PATH_XXX| replace::
|
|
|CMAKE_SYSTEM_PREFIX_PATH_XXX_SUBDIR|
|
|
.. |CMAKE_SYSTEM_XXX_PATH| replace::
|
|
:variable:`CMAKE_SYSTEM_PROGRAM_PATH`
|
|
.. |CMAKE_SYSTEM_XXX_MAC_PATH| replace::
|
|
:variable:`CMAKE_SYSTEM_APPBUNDLE_PATH`
|
|
|
|
.. |CMAKE_FIND_ROOT_PATH_MODE_XXX| replace::
|
|
:variable:`CMAKE_FIND_ROOT_PATH_MODE_PROGRAM`
|
|
|
|
.. include:: FIND_XXX.txt
|
|
|
|
When more than one value is given to the ``NAMES`` option this command by
|
|
default will consider one name at a time and search every directory
|
|
for it. The ``NAMES_PER_DIR`` option tells this command to consider one
|
|
directory at a time and search for all names in it.
|