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)