QtCreator Lua環(huán)境配置
環(huán)境
macosx 10.11 + qt 5.5 + lua 5.3
生成lua靜態(tài)庫
下載lua源碼玄呛,進(jìn)行編譯真慢,生成庫文件服爷。
makefile文件所在目錄下使用make+具體平臺(tái)指令:
make macosx
默認(rèn)會(huì)在源碼目錄下生成liblua.a靜態(tài)庫文件药薯。
.pro文件配置
qtcreator中在.pro文件中右鍵添加庫您朽,把剛剛生成的lua靜態(tài)庫加入進(jìn)去(或者也可以手工寫)狂丝。
以下是qt自動(dòng)生成的代碼,我手動(dòng)將之前生成的liblua.a庫文件復(fù)制到了項(xiàng)目目錄下的lib文件夾內(nèi)虚倒。
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/release/ -llua
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/debug/ -llua
else:unix: LIBS += -L$$PWD/lib/ -llua
INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/release/liblua.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/debug/liblua.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/release/lua.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/debug/lua.lib
else:unix: PRE_TARGETDEPS += $$PWD/lib/liblua.a
添加庫文件會(huì)自動(dòng)在.pro中加上很多項(xiàng)美侦,這些項(xiàng)默認(rèn)包含了各平臺(tái)的配置屬性,由于我的開發(fā)平臺(tái)是mac魂奥,所以只要看unix項(xiàng)就不難猜出添加項(xiàng)的功能菠剩。
此外還需要HEADERS項(xiàng)內(nèi)添加lua的一些頭文件。
HEADERS += lauxlib.h \
lua.h \
lualib.h \
luaconf.h
這4個(gè)文件是必須的耻煤,要從lua官方下的源碼中復(fù)制到qt項(xiàng)目目錄下具壮,少了哪幾個(gè),在編譯過程中都會(huì)報(bào)錯(cuò)并會(huì)告知鏈接需要哪些頭文件哈蝇。
warning
warning: object file (/Users/htea/Workspace/GroundQt/luaProcessor/lib//liblua.a(llex.o)) was built for newer OSX version (10.11) than being linked (10.7)
說明編譯的庫版本比鏈接版本新棺妓,但還是兼容的。
測(cè)試
使用時(shí)在頭部引入要用到的lua頭文件炮赦。
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
測(cè)試代碼
lua_State *lu = luaL_newstate();
luaL_openlibs(lu);
//執(zhí)行內(nèi)存腳本
std::string str = "print (\"Hello world!!!!\")";
luaL_loadbuffer(lu, str.c_str(), str.length(), "line");
lua_pcall(lu, 0, 0, 0);
測(cè)試結(jié)果
在qt的console中能看到 Hello world!!!! 的輸出結(jié)果就說明配置成功了怜跑。