# FindLua

Finds the Lua library. Lua is a embeddable scripting language.

Added in version 3.18: Support for Lua 5.4.

When working with Lua, its library headers are intended to be included in project source code as:

    #include <lua.h>

and not:

    #include <lua/lua.h>

This is because, the location of Lua headers may differ across platforms and may exist in locations other than `lua/`.

## Result Variables

This module defines the following variables:

`Lua_FOUND`

  Boolean indicating whether (the requested version of) Lua is found. For backward compatibility, the `LUA_FOUND` variable is also set to the same value.

`LUA_VERSION_STRING`

  The version of Lua found.

`LUA_VERSION_MAJOR`

  The major version of Lua found.

`LUA_VERSION_MINOR`

  The minor version of Lua found.

`LUA_VERSION_PATCH`

  The patch version of Lua found.

`LUA_LIBRARIES`

  Libraries needed to link against to use Lua. This list includes both `lua` and `lualib` libraries.

## Cache Variables

The following cache variables may also be set:

`LUA_INCLUDE_DIR`

  The directory containing the Lua header files, such as `lua.h`, `lualib.h`, and `lauxlib.h`, needed to use Lua.

## Examples

Finding the Lua library and creating an interface imported target that encapsulates its usage requirements for linking to a project target:

    find_package(Lua)

    if(Lua_FOUND AND NOT TARGET Lua::Lua)
      add_library(Lua::Lua INTERFACE IMPORTED)
      set_target_properties(
        Lua::Lua
        PROPERTIES
          INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}"
          INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES}"
      )
    endif()

    target_link_libraries(project_target PRIVATE Lua::Lua)