Ich lerne gerade, Lua zum Einbetten in meine C-Programme zu verwenden. Ich habe mich gefragt, was sie am besten sicherstellen, dass mein C-Programm die Lua-Dateien finden kann, nachdem es gebaut wurde. Ich versuche sicherzustellen, dass dies mit einem Out-of-Source CMake Build funktioniert.Was ist die beste Vorgehensweise beim Packen von Lua-Skriptdateien, die von C aus aufgerufen werden sollen. Verwenden von CMake
Hier ist was ich bisher habe.
In meiner C-Datei, ich habe ...
int runLuaHelloWorld() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "helloWorld.lua");
lua_close(L);
return 0;
}
In meinem CMakeLists.txt ich habe.
Dies kopiert es erfolgreich in mein Build-Verzeichnis. Aber es scheint meine lua-Skriptdatei relativ zu meinem aktuellen Arbeitsverzeichnis zu laden. Mit anderen Worten, ich kann das Skript nur ausführen, wenn ich es aus meinem Build-Ordner heraus ausführe.
Was ist die beste Vorgehensweise zum Einbinden und Ausführen externer Lua-Dateien nach dem Build?
Vielleicht mache ich das völlig falsch. Vielleicht ist das überhaupt kein Build-Problem. Das Lua-Skript muss relativ zur ausführbaren Datei (oder besser noch relativ zu einer Bibliothek) und nicht zu meinem Arbeitsverzeichnis ausgeführt werden.
Irgendeine Idee?
Wahrscheinlich [das ist] (https://stackoverflow.com/questions/16865040/luajit-compiling-bytecode-into-object-format) die beste Praxis aller Zeiten –
Siehe auch http://stackoverflow.com/questions/ 194520/creating-standalone-lua-executables. – lhf
Sie suchen nicht nach eigenständigen Lua-Executables. Ich schreibe eine Bibliothek in C und möchte eine Anwendung einschließen, die Lua-Skripte verwendet, um mit dieser Bibliothek zu interagieren. Ich möchte es leicht machen, die LUA-Datei zu bearbeiten, so dass ich nicht jedes Mal, wenn ich das Skript ändere, die gesamte Bibliothek neu kompilieren muss. – loneraver