gpt4 book ai didi

c - 打包要从 C 调用的 Lua 脚本文件的最佳做法是什么。使用 CMake

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:28 29 4
gpt4 key购买 nike

我正在学习使用 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 编写的扩展。然后我们使用 opendir()、readir() 等在该目录中查找文件,当它们以 '.lua' 结尾时,我们加载并执行它们。所以使用只需要将他们的脚本复制到那个位置。

在某些应用程序中,我们甚至将 Lua 脚本存储在 (PostgreSQL) 数据库表的文本列中。

关于c - 打包要从 C 调用的 Lua 脚本文件的最佳做法是什么。使用 CMake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41387809/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com