xlua 下載包中提供lua5.3的庫文件,如果需要luajit或者自己添加刪除的就需要自己進行編譯。 Lua53版本沒那么多事,主要是LuaJIt版本折騰的比較久。
工具
- Xlua使用CMake進行編譯,不管是哪個平台都需要提前安裝
- Windows 下 Visual Studio 2015 , MAC下XCODE
Windows(.dll)
- luajit 版本 默認使用的是 Visual Studio 2015
- 注意VS140COMNTOOLS環境變量以及該路徑是否存在vcvars64.bat\vcvars32.bat, 不存在的話重裝Visual Studio 2015或者別的地方復制過去
- lua53 使用cmake生成Visual Studio 2015 工程
Android(.so)
稍稍有點蛋疼,嘗試過在WIndow下使用Cygwin64進行編譯,不過一直提示“不可識別二進制數據“ ,解決不了就直接轉Mac平台了。
Mac 平台下編譯Android LuaJit 版本 鏈接庫注意:
- 使用Mac OS X平台的NDK版本 android-ndk-r10e-darwin-x86_64.zip
- 注意NDK路徑配置,不能確認就使用echo 輸出看下,Xlua默認是放在User/用戶名路徑下
- 根據自身平台來選擇對應的NDK,修改NDKP 中平台為darwin-x86_64(以64位為例哈,間咨詢過xlua的作者,他是在linux系統下編譯的,如果你是在linux下則不用修改),修改后NDKP:
NDKP=$NDKVER/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-
4. 使用GCC取代Clang, Ndk中不存在arm-linux-androideabi-clang3.6 ,可以通過修改luajit /src/makefile 文件 切換編譯器。參考:mac平台下LuaJIT-2.1.0-beta2 編譯android i686-linux-android-clang: Command not found
修改之后:
ifeq (Windows,$(findstring Windows,$(OS))$(MSYSTEM)$(TERM))
HOST_SYS= Windows
HOST_RM= del
else
HOST_SYS:= $(shell uname -s)
ifneq (,$(findstring MINGW,$(HOST_SYS)))
HOST_SYS= Windows
HOST_MSYS= mingw
endif
ifneq (,$(findstring CYGWIN,$(HOST_SYS)))
HOST_SYS= Windows
HOST_MSYS= cygwin
endif
# Use Clang for OSX host. 直接采用默認gcc
#ifeq (Darwin,$(HOST_SYS))
# DEFAULT_CC= clang
#endif
endif
- 必要時先刪除編譯產生的文件夾,有時候會出現錯誤:
Make Error: The current CMakeCache.txt directory /Users/rubbyzhang/Perforce/rubbyzhang_RUBBYZHANG-MC0_7887/Redfox/Branches/OnlineBattle_xlua/ThirdParty/xLua-master/build/build_lj_x86/CMakeCache.txt is different than the directory c:/Users/rubbyzhang/Desktop/Lua/xLua-master/build/build_lj_x86 where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
- 注意權限問題chmod基本可以解決,如果解決不了可以看下賬號的權限
IOS(.a)
Mac平台下,xcode安裝好,基本就沒啥問題了
增加刪除第三方庫
可以參考xlua文檔<增加刪除第三方庫>, 修改Cmakelists.txt文件以及C#部分,以增加lpeg、struct為例,可以在cmakelist.txt中增加設置:
# 增加Lpeg
set (LPEG_SRC pb/source/lpeg.c pb/source/struct.c)
set_property(
SOURCE ${LPEG_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
list(APPEND THIRDPART_INC pb/include)
set (THIRDPART_SRC ${THIRDPART_SRC} ${LPEG_SRC})
修改好的下載鏈接:http://pan.baidu.com/s/1sl12IFN
參考:
mac平台下LuaJIT-2.1.0-beta2 編譯android i686-linux-android-clang: Command not found
WIndows 使用VS編譯 Lua5
如何編譯各平台使用的庫-以編譯tolua為例
msvc交叉編譯:使用vcvarsall.bat設置命令行編譯環境