前一篇文章《在Mac OS上設定Quick-x和Cocos2d-x的Vim開發環境》中介紹的.bash_profile 的 LUA_PATH 配置設計不好,會衝掉 lua 的 packange.path ,本文作者針對這一問題進行了修正(本文已在CocosChina討論區發布,歡迎加入討論)。
遇到的問題
在執行 Quick-x 的打包 framework 的指令碼 bin/make_framework_package.sh 的時候,執行失敗,遇到以下錯誤:
Compile Lua source files in path /Users/ty/workspaces/quick-cocos2d-x/framework
luajit: unknown luaJIT command or jit.* modules not installed
ERR: cannot compile file /Users/ty/workspaces/quick-cocos2d-x/framework/api/Context.lua
造成的原因 使用google搜尋了 lua-users 之後瞭解到這個情況是由於 lua 的 vm 無法在運行時知道所依賴的模組。造成這個問題的原因 是我在 中匯出了全域變數 LUA_PATH, 當系統存在 LUA_PATH 這個全域變數時,lua 的 package.path 會自動使用這個全域變數, 所以原來的 pakcage.path 就背衝掉了。
有誰知道怎麼樣能夠把自訂路徑添加到 lua 的 package.path 中去呢。
現在我設定 LUA_PATH 的目的是為了在 VIM 中使用 quick-x 的代碼補完和片斷模板,所以只要讓這個變數在 vim 中生效,而不是 bash 全域生效即可解決問題。
所以修改 .bash_profile 如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 |
# NOTE: cocos2d-x-v3 中的 lua 介面檔案在 lua.vim 的掃描時報錯,所以我拿出來到 .vim/lua 目錄下,做二次加工 VIM_LUA_PATH= "$(echo `cd ~/.vim/lua/cocos2d-x-v3/ && pwd`)/?.lua;${VIM_LUA_PATH}" # NOTE: 我發現還是不能輕易的使用系統全域變數 LUA_PATH,因為這會把 lua 的 package.path 衝掉。 # 導致 luajit 編譯不工作。所以我拿出來放到 vim 的執行之前,作為傳入變數 if ! [[ -z "$VIM_LUA_PATH" ]]; then VI= "$(echo `which vim`)" alias vi= "LUA_PATH=\"${VIM_LUA_PATH}\" ${VI}" alias vim= "LUA_PATH=\"${VIM_LUA_PATH}\" ${VI}" VI= "$(echo `which mvim`)" alias mvim= "LUA_PATH=\"${VIM_LUA_PATH}\" ${VI}" fi |
來源網址:http://yi.github.io/work/2014/06/28/修正LUA_PATH導致luac編譯失敗的問題/