【问题标题】:Getting find_package to find a different version of Lua获取 find_package 以查找不同版本的 Lua
【发布时间】:2021-04-04 18:13:20
【问题描述】:

我在 Windows 上,使用 Visual Studio 2019,并且我有以下 CMakeLists.txt 文件:

project (demo C)
cmake_minimum_required(VERSION 2.8)

find_package(Lua 5.2 REQUIRED)

add_executable(demo main.c)
target_link_libraries(demo ${LUA_LIBRARIES})
target_include_directories(demo PRIVATE ${LUA_INCLUDE_DIR})

这不会构建,因为 CMake 找不到我的 Lua 5.2 版本。我正在使用的机器通过 C:\Program Files (x86)\Lua\5.1 中的旧(已弃用)luaforwindows 安装程序安装了 5.1.4,当我在 find_package() 中指定 5.1(或根本没有版本)时行,找到了。

Lua 5.2 或更高版本没有这样的安装程序,所以我从https://sourceforge.net/projects/luabinaries/ 下载了 5.2 二进制文件并将它们复制到 C:\Program Files (x86)\Lua\5.2 下的类似目录结构,但它们不是没有找到。可能有一些环境变量或其他方式可以为 FindLua.cmake 脚本提供提示 - 在 Windows 上,这方面的规范方式到底是什么?

我尝试过的:我认为这是用 CMAKE_PREFIX_PATH 处理的,所以我将它添加到 CMakeSettings.json:

      "cmakeCommandArgs": "-DCMAKE_PREFIX_PATH=C:/Program Files (x86)/Lua/5.2",

但它没有效果。仍然收到旧消息:

1> [CMake]   Could NOT find Lua (missing: LUA_INCLUDE_DIR) (Required is at least version
1> [CMake]   "5.2")

【问题讨论】:

  • "Binaries" 在您想要运行已经构建的程序时很有用。但是对于构建(编译)程序,您也需要标头。如果是 Lua,则需要 lua.h 标头。如您所见,在您的“二进制文件”提供的 4 个文件中,没有这样的文件。
  • 我知道这一点。还有第二个 zip 文件,其中包含 Lua 库的二进制文件和头文件,它们安装在正确的位置(但事实证明,名称错误)。

标签: visual-studio cmake lua


【解决方案1】:

我终于明白了。该库必须命名为 lua52.lib(我下载的 zip 文件将其命名为 liblua52.a,虽然我已将其重命名为 .lib,但我没有使用该名称,导致 FindLua.cmake 错过它)。然后我还把我所有的PATH、LUA_PATH、LUA_DEV等环境变量都改成指向5.2目录,现在可以了。不过,我想知道为什么 CMAKE_PREFIX_PATH 不起作用,因为我希望能够为每个项目选择一个位置。

【讨论】:

  • 我需要在路径周围添加引号,因为它包含空格!做到了。 -DCMAKE_PREFIX_PATH="C:\Program Files (x86)\Lua\5.2"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
相关资源
最近更新 更多