在VS2008中配置Lua編譯環(huán)境,能正確高亮并編譯-Configuration Lua compiler in VS2008 environment, and compile correctly highlighted
在VS2008中編譯LUA解釋器和庫文件
(一) 下載的Lua中并未含有VS的項目文件,因此不能直接編譯項目文件,但是Lua提供了一個批處理文件,通過VS的命令行方式編譯。首先選擇VS2008的命令行工具(在開始菜單中),假設(shè)Lua的存儲位置是D:\Lua-5.1.4,該目錄下面還有很多文件夾,比如etc、src、test(一些lua例子文件)。在命令行窗口中執(zhí)行 cd D:\Lua-5.1.4,在此目錄下用D:\Lua-5.1.4>etc\luava.bat。該批處理文件會自動生成.vcproject項目文件,然后調(diào)用cl進行編譯,編譯完成后再把諸如.obj,.manifest等中間文件和項目相關(guān)文件全部刪除,最后只剩下lua.exe,luac.exe和lua51.lib,lua51.dll幾個文件。
(二)集成至VS2008(參考網(wǎng)上文章)
此步驟參考網(wǎng)上文章如下。
在VS中選擇工具菜單下的外部工具項,在打開的對話框中進行如下配置:
說明:
1) 標(biāo)題:就是在工具菜單下顯示的菜單項描述
2) 命令:即指定Lua解釋器,我編譯后將Lua.exe Lua51.lib Lua51.dll Luac.exe拷貝到D:\Develop Software\Lua下,我在此目錄下安裝的全是我的開發(fā)工具。
3) 參數(shù):可以解釋為[Lua.exe source.lua],像cl.exe source.cpp等之類的。
在我的環(huán)境下為:F:\10.Discover\我的代碼\$(ItemFileName)$(ItemExt)
其中,$(ItemFileName)表示文件名,$(ItemExt)表示文件擴展名。
這兩個參數(shù)可以通過按下按鈕選擇:項文件名、項擴展名。
也就是說我準(zhǔn)備編譯,F(xiàn):\10.Discover\我的代碼\xxx.lua文件,
4) 初始目錄:表示Lua.exe所在的目錄
如果勾選“使用輸出窗口”,這表示將使用VS2008的“輸出窗口”作為結(jié)果呈現(xiàn)區(qū)。
好了,配置完成,在VS中新建一個文本文件,并保存為Print.lua,輸入以下語句:
print( “Hello, Lua!” )
然后選擇“工具”菜單下的“Lua 解釋器”即可出現(xiàn)控制臺,當(dāng)中顯示:Hello, Lua!
當(dāng)然也可以環(huán)境變量中做個配置,以后就可以直接在控制臺下輸入Lua source.lua,以執(zhí)行腳本。
(三)更好的方法
去Lua的官網(wǎng),有個叫LuaForWindows的項目,是一個執(zhí)行文件,下載完成之后直接安裝,還附帶個SciTE,可以用來編輯Lua腳本,帶語法支持的。安裝完成就可以了。
在VS2008命令行編譯Lua
假設(shè)目錄為D:\Lua5.1
注意是定位到D:\Lua5.1下,然后執(zhí)行D:\Lua5.1\etc\luavs.bat ,不然總是出錯。
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
E:\Program Files\Microsoft Visual Studio 9.0\VC>d:
D:\>cdlua5.1
'cdlua5.1' 不是內(nèi)部或外部命令,也不是可運行的程序
或批處理文件。
D:\>cd lua5.1
D:\lua5.1>d:\lua5.1\etc\luavs.bat
D:\lua5.1>cd src
D:\lua5.1\src>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUILD_A
S_DLL l*.c
lapi.c
lauxlib.c
lbaselib.c
lcode.c
ldblib.c
ldebug.c
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
liolib.c
llex.c
lmathlib.c
lmem.c
loadlib.c
lobject.c
lopcodes.c
loslib.c
lparser.c
正在生成代碼...
正在編譯...
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
ltm.c
lua.c
luac.c
lundump.c
lvm.c
lzio.c
正在生成代碼...
D:\lua5.1\src>del lua.obj luac.obj
D:\lua5.1\src>link /nologo /DLL /out:lua51.dll l*.obj
正在創(chuàng)建庫 lua51.lib 和對象 lua51.exp
D:\lua5.1\src>if exist lua51.dll.manifest mt /nologo -manifest lua51.dll.manifes
t -outputresource:lua51.dll;2
D:\lua5.1\src>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUILD_A
S_DLL lua.c
lua.c
D:\lua5.1\src>link /nologo /out:lua.exe lua.obj lua51.lib
D:\lua5.1\src>if exist lua.exe.manifest mt /nologo -manifest lua.exe.manifest -o
utputresource:lua.exe
D:\lua5.1\src>cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE l*.c print.c
lapi.c
lauxlib.c
lbaselib.c
lcode.c
ldblib.c
ldebug.c
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
liolib.c
llex.c
lmathlib.c
lmem.c
loadlib.c
lobject.c
lopcodes.c
loslib.c
lparser.c
正在生成代碼...
正在編譯...
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
ltm.c
lua.c
luac.c
lundump.c
lvm.c
lzio.c
print.c
正在生成代碼...
D:\lua5.1\src>del lua.obj linit.obj lbaselib.obj ldblib.obj liolib.obj lmathlib.
obj loslib.obj ltablib.obj lstrlib.obj loadlib.obj
D:\lua5.1\src>link /nologo /out:luac.exe *.obj
D:\lua5.1\src>if exist luac.exe.manifest mt /nologo -manifest luac.exe.manifest
-outputresource:luac.exe
D:\lua5.1\src>del *.obj *.manifest
D:\lua5.1\src>cd ..
D:\lua5.1>
D:\lua5.1>