无法在cmake中找到带有find_package的Lua头文件

Ale*_*lex 8 lua cmake

我正在尝试使用CMake为我使用Lua的项目构建生成make文件.当我运行make时,我收到此错误:

/path/to/my/project/luaudio/luaudio.c:1:17: fatal error: lua.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在CMakeLists.txt文件中,我有以下几行,我认为会这样做,但显然它们还不够:

find_package(Lua51 REQUIRED) 
set(Luaudio_INCLUDE_DIRS ${Luaudio_SOURCE_DIR} ${Lua51_INCLUDE_DIRS} PARENT_SCOPE)
include_directories(${Luaudio_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

Lua51_Include_Dirs似乎是空的(尝试运行它虽然消息命令不打印任何东西)所以我怀疑它只是找不到它.我需要指定在哪里寻找Lua吗?我的印象是find_package的重点在于它会在一个预定义的位置中查找,这样我就不需要指定它的具体位置.

(这是在Ubuntu机器上,我确实安装了Lua软件包.)

小智 16

安装lua bin:

sudo apt-get install lua5.1
Run Code Online (Sandbox Code Playgroud)

安装lua lib:

sudo apt-get install lua5.1-dev
Run Code Online (Sandbox Code Playgroud)


And*_*aev 5

FindLua51.cmake从cmake 2.8 探索我发现它设置LUA_INCLUDE_DIR变量而不是Lua51_INCLUDE_DIRS.所以cmake代码应该是

find_package(Lua51 REQUIRED) 
set(Luaudio_INCLUDE_DIRS ${Luaudio_SOURCE_DIR} ${LUA_INCLUDE_DIR} PARENT_SCOPE)
include_directories(${Luaudio_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

  • 在Linux上,它将类似于`/ usr/share/cmake-2.8/Modules/FindLua51.cmake` (3认同)