【问题标题】:Unable to find Lua headers with find_package in cmake在 cmake 中找不到带有 find_package 的 Lua 头文件
【发布时间】:2011-08-26 20:19:22
【问题描述】:

我正在尝试使用 CMake 为我的一个使用 Lua 的项目生成生成文件。当我运行 make 我得到这个错误:

/path/to/my/project/luaudio/luaudio.c:1:17: fatal error: lua.h: No such file or directory

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

find_package(Lua51 REQUIRED) 
set(Luaudio_INCLUDE_DIRS ${Luaudio_SOURCE_DIR} ${Lua51_INCLUDE_DIRS} PARENT_SCOPE)
include_directories(${Luaudio_INCLUDE_DIRS})

Lua51_Include_Dirs 似乎是空的(尝试运行它,尽管消息命令不打印任何内容)所以我怀疑它只是找不到它。我需要指定在哪里寻找 Lua 吗?我的印象是 find_package 的全部意义在于它会在一组预定义的位置中查找,因此我不需要具体指定它的位置。

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

【问题讨论】:

  • 你是在#include "lua.h"还是#include <lua/lua.h>
  • 我正在使用#include "lua.h"。我也尝试过#include "lua/lua.h",尽管这不是我应该做的。都没有奏效。我没有尝试使用<>,但如果这有所作为,我会感到非常惊讶。
  • @Alex Using #include "lua5.1/lua.h" 在安装 lua5.1-dev 后为我工作。

标签: lua cmake


【解决方案1】:

适用于 Ubuntu 14.04 sudo apt-get install lua5.2 sudo apt-get install liblua5.2-dev

【讨论】:

    【解决方案2】:

    从cmake 2.8探索FindLua51.cmake我发现它设置了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})
    

    【讨论】:

    • 谢谢,我会试试的。文件FindLua51.cmake 在哪里?我曾一度尝试查找它,但无法通过粗略的搜索找到它。编辑:成功!谢谢。
    • 在 linux 上它将类似于 /usr/share/cmake-2.8/Modules/FindLua51.cmake
    【解决方案3】:

    安装lua bin:

    sudo apt-get install lua5.1
    

    安装 lua 库:

    sudo apt-get install lua5.1-dev
    

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2016-01-19
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 2021-09-17
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多