저는 루아를 사용하여 C 프로그램에 임베딩하는 방법을 배우고 있습니다. 나는 C 프로그램이 빌드 된 후 Lua 파일을 찾을 수있는 최선의 방법을 궁금해했다. 내가 밖으로 소스 CMake 빌드와 함께 작동하도록 노력하고있어.루아 스크립트 파일을 C에서 호출하여 패키징하는 가장 좋은 방법은 무엇입니까? CMake를 사용하여
여기까지 제가 지금까지 있습니다. 내 CMakeLists.txt에서 내 C 파일에서
, 나는이 ...
int runLuaHelloWorld() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "helloWorld.lua");
lua_close(L);
return 0;
}
나는 있습니다.
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()
이렇게하면 성공적으로 내 빌드 디렉토리에 복사됩니다. 하지만 그것은 내 현재 작업 디렉토리에 상대적으로 내 루아 스크립트 파일을로드하는 것 같습니다. 즉, 내 빌드 폴더에서 스크립트를 실행하는 경우에만 스크립트를 실행할 수 있습니다.
외부 루아 파일 빌드를 포함하고 실행하는 가장 좋은 방법은 무엇입니까?
아마도 나는 완전히 잘못된 방향으로 가고 있습니다. 어쩌면 이것은 빌드 문제가 아닐 수도 있습니다. 루아 스크립트는 작업 디렉토리보다는 실행 파일에 상대적으로 (또는 라이브러리에 비해 상대적으로) 실행해야합니다.
아이디어가 있으십니까?
아마 이것은 [https://stackoverflow.com/questions/16865040/luajit-compiling-bytecode-into-object-format] 모범 사례 –
도 참조하십시오 http://stackoverflow.com/questions/ 194520/creating-standalone-lua-executables를 참조하십시오. – lhf
독립형 Lua 실행 파일을 만들지 않으려 고합니다. 나는 C로 라이브러리를 작성 중이며이 라이브러리와 상호 작용하기 위해 Lua 스크립트를 사용하는 애플리케이션을 포함하고자한다. lua 파일을 편집하여 스크립트를 변경할 때마다 전체 라이브러리를 다시 컴파일 할 필요가 없도록하고 싶습니다. – loneraver