最近的項目中用到了lua,開始是直接使用lua自帶的API進行調用,不過堆棧調來調去很麻煩,於是上網找lua 針對 C++的封裝,經過一番權衡,最後選用了 luaplus。
本以爲應該很容易就弄出來,結果坑爹的搞了一上午,在此寫下編譯過程,以方便後來人
1,下載源代碼
http://luaplus.org/
這個是官網,不過坑爹是下載的資源只有git 這種方式,太麻煩。。(版本控制軟件)
於是不甘心,繼續google搜索,最終讓我找到了蛛絲馬跡:
http://luaplus.org/issues/4
這個bug填的也是個同胞,呵呵。
根據這個bug的回覆,發現luaplus轉到了github上。
https://github.com/jjensen/luaplus51-all
根據如上的鏈接,我們可以獲取源代碼了。
2,編譯
按照wiki中的描述,要使用Jam生成VC的工程文件,不過經過筆者各種嘗試,沒成功。
不甘心之下繼續上網搜索,發現一些帖子抽取源代碼,自己手動建工程的方式編譯的,於是嘗試下,發現可行:
方法簡述如下:
進入源代碼目錄中的luaplus子目錄,由於我要編譯的是靜態庫版本,所以再進入到StaticLib子目錄中,使用文本編輯器打開LuaPlusStaticLib.jam 文件。
文本中主要注意的是:
LUAPLUS_SRCS 後面的都是工程編譯所要用的源代碼文件。
C.Defines LuaPlusShared 後面的 是預編譯宏,需要加到工程中。
然後就是定好輸出的路徑和名稱,點擊編譯即可了。
PS: 由於源代碼文件太多了,逐個篩選太麻煩,截止該文發佈,luaplus目錄下和luaplus\src子目錄下的文件,除了 luac.c, lua.c, LuaPlusAll.cpp外,都需要加入到工程中,
如果版本變化了,就簡單參照一下吧。
PS2:這個版本有一個文件編譯的時候會報錯, 問題是返回值是void類型函數,寫了返回值,把return去掉,重新編譯即可。
OVER