目录结构
编译出来为我所需的文件,以及代码文件
├── bin │ ├── test │ └── test.lua ├── build ├── CMakeLists.txt ├── lua │ ├── include │ │ ├── lauxlib.h │ │ ├── lua.h │ │ ├── lua.hpp │ │ ├── luaconf.h │ │ └── lualib.h │ └── lib │ └── liblua.a └── src └── main.cpp
源代码
//main.cpp #include <stdio.h> extern "C"{ #include <lua.h> #include <lualib.h> #include <lauxlib.h> } int main(int argc, char ** argv) { lua_State * L = luaL_newstate() ; //创建lua运行环境 if (!L) { printf("error for luaL_newstate\n"); } luaopen_base(L); // 加载Lua基本库 luaL_openlibs(L); // 加载Lua通用扩展库 int ret = luaL_loadfile(L,"test.lua") ; //加载lua脚本文件 if (ret) { printf("error for luaL_loadfile\n"); } ret = lua_pcall(L,0,0,0) ; if (ret) { printf("error for lua_pcall\n"); } lua_getglobal(L,"printmsg"); ret = lua_pcall(L,0,0,0); if (ret) { printf("error for lua_pcall\n"); } return 0; }
-- test.lua function printmsg() print("hello word") end
#CMakeLists.txt PROJECT(test) CMAKE_MINIMUM_REQUIRED(VERSION 2.6) set(EXECUTABLE_OUTPUT_PATH ../bin) ## libs link_directories(/usr/local/lib) link_directories(/usr/lib) ## includes include_directories(/usr/local/include) include_directories(./src SRC_DIR) include_directories(./lua/include) aux_source_directory(./src SRC_DIR) ## apps add_executable(test ${SRC_DIR} ) ## link libs target_link_libraries(test lua m dl)
编译运行
$ cd build $ cmake .. $ make $ cd ../bin $ ./test