# CMAKE_FIND_REQUIRED

Added in version 4.1.

If enabled, the following commands are treated as having the `REQUIRED` keyword unless provided with the `OPTIONAL` keyword:

- `find_package()`

- `find_program()`

- `find_library()`

- `find_path()`

- `find_file()`

When `find_package()` loads a `Find<PackageName>.cmake` or `<PackageName>Config.cmake` module, the `CMAKE_FIND_REQUIRED` variable is automatically unset within it to restore the default behavior for nested find operations. The module is free to set the `CMAKE_FIND_REQUIRED` variable itself to opt-in to the behavior.

Note that enabling this variable breaks some commonly used patterns. Multiple calls to `find_package()` are sometimes used to obtain a different search order to the default.

See also the `CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>` variable for making a `find_package()` call `REQUIRED`, and for additional information on how enabling these variables can break commonly used patterns.