QtCreator Lua環(huán)境配置
環(huán)境
macosx 10.11 + qt 5.5 + lua 5.3
生成lua靜態(tài)庫
下載lua源碼,進行編譯,生成庫文件。
makefile文件所在目錄下使用make+具體平臺指令:
make macosx
默認會在源碼目錄下生成liblua.a靜態(tài)庫文件。
.pro文件配置
qtcreator中在.pro文件中右鍵添加庫,把剛剛生成的lua靜態(tài)庫加入進去(或者也可以手工寫)。
以下是qt自動生成的代碼,我手動將之前生成的liblua.a庫文件復(fù)制到了項目目錄下的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
添加庫文件會自動在.pro中加上很多項,這些項默認包含了各平臺的配置屬性,由于我的開發(fā)平臺是mac,所以只要看unix項就不難猜出添加項的功能。
此外還需要HEADERS項內(nèi)添加lua的一些頭文件。
HEADERS += lauxlib.h \
lua.h \
lualib.h \
luaconf.h
這4個文件是必須的,要從lua官方下的源碼中復(fù)制到qt項目目錄下,少了哪幾個,在編譯過程中都會報錯并會告知鏈接需要哪些頭文件。
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)
說明編譯的庫版本比鏈接版本新,但還是兼容的。
測試
使用時在頭部引入要用到的lua頭文件。
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
測試代碼
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);
測試結(jié)果
在qt的console中能看到 Hello world!!!! 的輸出結(jié)果就說明配置成功了。