如何使用CMake打包Lua脚本文件以供C调用的最佳实践
2016-12-29 22:3:1
收藏:0
阅读:180
评论:1
我正在学习使用Lua嵌入我的C程序。我想知道怎么才能确保我的C程序在构建后能找到Lua文件。我正在试图确保这个问题在使用外部CMake构建时也能得到解决。
目前为止我有以下代码:
在我的C文件中,我有...
int runLuaHelloWorld() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "helloWorld.lua");
lua_close(L);
return 0;
}
在我的CMakeLists.txt文件中,我有...
set(EMBEDDED_LUA_SRC embeddedLua.c embeddedLua.h)
add_library(embeddedLua ${EMBEDDED_LUA_SRC})
if(LUA_FOUND)
target_include_directories(embeddedLua PRIVATE ${LUA_INCLUDE_DIR})
target_link_libraries(embeddedLua ${LUA_LIBRARIES})
add_custom_command(TARGET embeddedLua POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:embeddedLua> helloWorld.lua)
endif()
这段代码成功地将Lua脚本文件复制到了我的构建目录中。但它似乎是相对于我的当前工作目录来加载我的Lua脚本文件的。换句话说,只有当我从我的构建目录运行时,我的脚本才能运行。
在构建后包含和运行外部Lua文件的最佳实践是什么呢?
也许我完全走了弯路。也许这完全不是一个构建问题。Lua脚本需要相对于可执行文件(或者更好地是相对于一个库)来运行,而不是相对于我的工作目录。
有什么想法吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

在我们的软件中,我们定义了一个目录的路径,我们在其中存储用 Lua 编写的扩展文件。然后使用 opendir()、readir() 等函数在该目录中查找文件,并在其扩展名为“.lua”时加载和执行它们。因此,用户只需将其脚本复制到该位置即可。
在一些应用中,我们甚至将 Lua 脚本存储在 (PostgreSQL) 数据库表的文本列中。