我正在學習使用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