如何使 find_package 找到不同版本的 Lua
2020-12-27 19:38:42
收藏:0
阅读:420
评论:1
我使用 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 找不到版本号为 5.2 的 Lua。我的电脑上安装了版本号为 5.1.4 的 Lua,是通过旧版(已经被弃用)的 luaforwindows 安装器安装到了 C:\Program Files (x86)\Lua\5.1 目录下的,我尝试在 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")
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我最终解决了问题。库的名称必须为 lua52.lib (我下载的压缩包中名称为 liblua52.a,虽然我已将其重命名为 .lib,但我没有使用该名称,导致 FindLua.cmake 无法找到它)。然后我还将所有的 PATH、LUA_PATH、LUA_DEV 和其他环境变量都更改为指向 5.2 目录,现在它可以正常工作了。不过我不知道为什么 CMAKE_PREFIX_PATH 不起作用,因为我希望能够针对每个项目选择一个位置。