本文介绍使用Qt5.14.2在Win10上编译Lua源码,并将Lua源码编译成三个不同的目标文件,它们分别是:
0:LuaLib(Lua动态库)
1:LuaCompile(Lua编译器)
2:LuaExplanation(Lua解释器)
0x00 下载Lua源码
- 下载地址
http://www.lua.org/download.html
0x01 使用Qt创建QtLua工程
-
将lua-5.4.4源码(即整个src目录)复制到QtLua工程下,并删除该工程下的main.cpp文件
-
修改QtLua.pro文件
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
DESTDIR = bin/LuaLib
CONFIG -= debug_and_release
MOC_DIR = tmp/moc
RCC_DIR = tmp/rcc
UI_DIR = tmp/ui
OBJECTS_DIR = tmp/obj
DEFINES += LUA_BUILD_AS_DLL
# 0:LuaLib(Lua动态库) 1:LuaCompile(Lua编译器) 2:LuaExplanation(Lua解释器)
# 编译选项
makeOption = 1
message($$makeOption)
if(equals(makeOption, 0)){
TARGET = lua
# 编译动态库
TEMPLATE = lib
DEFINES += QTLUA_LIBRARY
DESTDIR = bin/LuaLib
message("0:LuaLib")
}
if(equals(makeOption, 1)){
TARGET = luac
DESTDIR = bin/LuaCompile
LIBS += -L$$PWD/bin/LuaLib
LIBS += -llua
SOURCES += src/luac.c
message("1:LuaCompile")
}
if(equals(makeOption, 2)){
TARGET = lua
DESTDIR = bin/LuaExplanation
SOURCES += src/lua.c
message("2:LuaExplanation")
}
if(equals(makeOption, 0) || equals(makeOption, 1)){
SOURCES += \
src/lapi.c \
src/lauxlib.c \
src/lbaselib.c \
src/lcode.c \
src/lcorolib.c \
src/lctype.c \
src/ldblib.c \
src/ldebug.c \
src/ldo.c \
src/ldump.c \
src/lfunc.c \
src/lgc.c \
src/linit.c \
src/liolib.c \
src/llex.c \
src/lmathlib.c \
src/lmem.c \
src/loadlib.c \
src/lobject.c \
src/lopcodes.c \
src/loslib.c \
src/lparser.c \
src/lstate.c \
src/lstring.c \
src/lstrlib.c \
src/ltable.c \
src/ltablib.c \
src/ltm.c \
src/lundump.c \
src/lutf8lib.c \
src/lvm.c \
src/lzio.c
}
HEADERS += \
src/lapi.h \
src/lauxlib.h \
src/lcode.h \
src/lctype.h \
src/ldebug.h \
src/ldo.h \
src/lfunc.h \
src/lgc.h \
src/ljumptab.h \
src/llex.h \
src/llimits.h \
src/lmem.h \
src/lobject.h \
src/lopcodes.h \
src/lopnames.h \
src/lparser.h \
src/lprefix.h \
src/lstate.h \
src/lstring.h \
src/ltable.h \
src/ltm.h \
src/lua.h \
src/lua.hpp \
src/luaconf.h \
src/lualib.h \
src/lundump.h \
src/lvm.h \
src/lzio.h
- 由于QtLua.pro中设置了3个编译选项,可以将Lua源码编译成3个不同的目标文件,详细设置请阅读QtLua.pro文件。