使用Qt编译Lua

本文介绍使用Qt5.14.2在Win10上编译Lua源码,并将Lua源码编译成三个不同的目标文件,它们分别是:
0:LuaLib(Lua动态库)
1:LuaCompile(Lua编译器)
2:LuaExplanation(Lua解释器)

0x00 下载Lua源码

  • 下载地址
    http://www.lua.org/download.html

使用Qt编译Lua_第1张图片

0x01 使用Qt创建QtLua工程

使用Qt编译Lua_第2张图片

  1. 将lua-5.4.4源码(即整个src目录)复制到QtLua工程下,并删除该工程下的main.cpp文件

  2. 修改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

# 0LuaLib(Lua动态库)    1LuaCompile(Lua编译器)   2LuaExplanation(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
  1. 由于QtLua.pro中设置了3个编译选项,可以将Lua源码编译成3个不同的目标文件,详细设置请阅读QtLua.pro文件。

使用Qt编译Lua_第3张图片

使用Qt编译Lua_第4张图片

0x02 效果演示

使用Qt编译Lua_第5张图片

你可能感兴趣的:(Qt,lua,qt,开发语言,c++)