我正在学习使用Lua嵌入到我的C程序中。我想知道他们最好的办法是确保我的C程序可以在构建完成后找到Lua文件。我试图确保这可以与源代码CMake构建一起使用。包装Lua脚本文件的最佳做法是从C中调用。使用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脚本文件相对于我当前的工作目录。换句话说,如果我从build文件夹运行脚本,我只能运行该脚本。
包含和运行外部lua文件发布后的最佳做法是什么?
也许我会以完全错误的方式去解决这个问题。也许这根本不是构建问题。 lua脚本需要相对于可执行文件运行(或者更好,相对于库),而不是运行在我的工作目录中。
有什么想法?
大概[这是](https://stackoverflow.com/questions/16865040/luajit-compiling-bytecode-into-object-format)有史以来的最佳做法 –
参见http://stackoverflow.com/questions/ 194520 /创建 - 独立 - 卢阿 - 可执行文件。 – lhf
不打算创建独立的Lua可执行文件。我正在用C编写一个库,并希望包含一个使用Lua脚本与该库进行交互的应用程序。我想让编辑lua文件变得很容易,以便每次更改脚本时都不必重新编译整个库。 – loneraver