Back to Cmake

find_program

Help/command/find_program.rst

4.3.22.1 KB
Original Source

find_program

.. |FIND_XXX| replace:: find_program .. |NAMES| replace:: NAMES <name>... [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:: include/FIND_XXX.rst

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.

The set of files considered to be programs is platform-specific:

  • On Windows, filename suffixes are considered in order .com, .exe, and no suffix.

  • On non-Windows systems, no filename suffix is considered, but files must have execute permission (see policy :policy:CMP0109).

To search for scripts, specify an extension explicitly:

.. code-block:: cmake

if(WIN32) set(_script_suffix .bat) else() set(_script_suffix .sh) endif()

find_program(MY_SCRIPT NAMES my_script${_script_suffix})