之前做手游项目时,客户端用lua做脚本,基本所有游戏逻辑都用它完成,玩起来有点不爽,感觉“太重”了。而我又比较偏服务端这边(仅有C++),所以热情不高。最近,加入了一个端游项目,客户端和服务器都用了lua,各种玩法是让我眼界大开。在此,写下自己的心得与体会,希望能与大家共同探讨进步。
环境搭建
lua官网下载lua源代码,我们将用它来编译静态库,解释器,以及动态库。
CMake官网下载最新的安装包,我们将用它来作为搭建solution的工具。
集成开发环境为VS2012,整个的编码以及测试工作,将借助它来完成。
创建solution
将下载好的lua源码解压好后,得到如图所示目录,我们在src目录下,创建一个名为CMakeLists.txt的文本文件。
根据doc目录下的readme的说明,我们编写如下内容,来建立静态库:
可以看到,建立library需要框出的所有.c文件,建立interpreter需要library文件加上lua.c,至于最后的compiler,我略去不表。
整个的CMakeLists.txt文件内容如下:
project(LuaTest)
include_directories(AFTER ${CMAKE_SOURCE_DIR})
##########lua静态库############################################
set(LIB_FILES lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c ltm.c lundump.c lvm.c lzio.c lauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c lmathlib.c loslib.c lstrlib.c ltablib.c loadlib.c linit.c)
source_group("\\libFiles" FILES ${LIB_FILES})
add_library (LuaLib STATIC ${LIB_FILES})
###########c++与lua交互###################
add_executable(LuaWithCPPTest source.cpp)
target_link_libraries(LuaWithCPPTest LuaLib)
############lua解释器###########
add_executable(LuaInterpreter lua.c ${LIB_FILES})
#ADD_DEFINITIONS(-LUA_LIB -LUA_BUILD_AS_DLL)
######################################define LUA_LIB##################################################
######################################define LUA_BUILD_AS_DLL#########################################