MinGW+Lua環境配置小結

雖然說VC是Windows下C++開發的首選工具,但有時候寫一些小程序,我仍是更傾向於使用一些輕量級的開發工具。好比最近研究Lua嵌入 C++,有時候只是寫一些很小的程序,這時候Visual Studio就顯得太過臃腫了,因而我選擇了EditPlus+MinGW的方法。搞了兩個晚上,終於搭建好了環境,在這裏總結一下,以備未來查看。
    MinGW的安裝比較簡單了。我偷懶直接下了個自動安裝程序,他會本身去下載最新的包,並解壓到正確的位置。爲了更方便的使用,還須要配置環境變 量,google了一下,還挺多。要是每到一臺機器都要這樣配置的話,那不是很累。本着計算機能完成的工做毫不本身作的原則,我決定寫個js腳本配置環境 變量。最開始採用了修改註冊表的方法,可是後來發現這種方式修改環境變量是不能當即生效的。又google了一下,改用WScript的shell對象來 直接修改環境變量。ios

 

    要配置的環境變量:

    MINGW_PATH = 「MinGW的主目錄」

    C_INCLUDE_PATH = "%MINGW_PATH%//include;%MINGW_PATH%//lib//gcc//mingw32//3.4.5//include ";

    CPLUS_INCLUDE_PATH = "%MINGW_PATH%//include//c++//3.4.5;%MINGW_PATH%//include//c++//3.4.5//mingw32;%MINGW_PATH%

//include//c++//3.4.5//backward;%C_INCLUDE_PATH% ";

    LIBRARY_PATH = "%MINGW_PATH%//lib;%MINGW_PATH%//lib//gcc//mingw32//3.4.5";

    PATH = "%MINGW_PATH%//bin;%MINGW_PATH%//libexec//gcc//mingw32//3.4.5;";
c++

    寫成js腳本,把這個腳本放到MinGW的主目錄裏,雙擊運行就能夠了。 

function GetCurrPath ()
{
    fso = new ActiveXObject ("Scripting.FileSystemObject" );
    currFolder = fso . GetFolder ("." );
    return currFolder . path
}

//取得當前路徑
MINGW_PATH = GetCurrPath ();

C_INCLUDE_PATH = "%MINGW_PATH%//include;%MINGW_PATH%//lib//gcc//mingw32//3.4.5//include " ;

CPLUS_INCLUDE_PATH = "%MINGW_PATH%//include//c++//3.4.5;%MINGW_PATH%//include//c++//3.4.5//mingw32;%MINGW_PATH%//include/

/c++//3.4.5//backward;%C_INCLUDE_PATH% " ;

LIBRARY_PATH = "%MINGW_PATH%//lib;%MINGW_PATH%//lib//gcc//mingw32//3.4.5" ;

PATH = "%MINGW_PATH%//bin;%MINGW_PATH%//libexec//gcc//mingw32//3.4.5;" ;

var WshShell = WScript . CreateObject ("WScript.Shell" );
var WshSysEnv =   WshShell . Environment ("SYSTEM" );
WshSysEnv ("MINGW_PATH" ) = MINGW_PATH ;
WshSysEnv ("C_INCLUDE_PATH" ) = C_INCLUDE_PATH ;
WshSysEnv ("CPLUS_INCLUDE_PATH" ) = CPLUS_INCLUDE_PATH ;
WshSysEnv ("LIBRARY_PATH" ) = LIBRARY_PATH ;
PATH = PATH + WshSysEnv ("PATH" );
WshSysEnv ("PATH" ) = PATH ;
WScript . Echo ("MinGW環境變量設置完成!" );shell

 

    接下來是Lua環境,下載Lua的bin和lib之後,作成下面的目錄結構:

Lua

├─bin
│      bin2c.exe
│      lua.exe
│      lua5.1.dll
│      lua51.dll
│      luac.exe
│      wlua.exe

├─include
│      lauxlib.h
│      lua.h
│      lua.hpp
│      luaconf.h
│      lualib.h

└─lib
        lua5.1.lib
        lua51.lib小程序

 

    而後仍然是js腳本配置環境變量:

function GetCurrPath ()
{
    fso = new ActiveXObject ("Scripting.FileSystemObject" );
    currFolder = fso . GetFolder ("." );
    return currFolder . path
}

//取得當前路徑
LUA_HOME = GetCurrPath ();

LUA_BIN = "%LUA_HOME%//bin;" ;

LUA_INCLUDE = "%LUA_HOME%//include;" ;

LUA_LIB = "%LUA_HOME%//lib;" ;

var WshShell = WScript . CreateObject ("WScript.Shell" );
var WshSysEnv =   WshShell . Environment ("SYSTEM" );

WshSysEnv ("LUA_HOME" ) = LUA_HOME ;
//bin加入path
WshSysEnv ("PATH" ) = LUA_BIN + WshSysEnv ("PATH" );
//include加入MinGW
WshSysEnv ("C_INCLUDE_PATH" ) = LUA_INCLUDE + WshSysEnv ("C_INCLUDE_PATH" );
//lib加入MinGW
WshSysEnv ("LIBRARY_PATH" ) = LUA_LIB + WshSysEnv ("LIBRARY_PATH" );
WScript . Echo ("LUA環境變量設置完成!" );ide

    有時候設置好了卻不生效,重啓一下就行了。先寫個Hello World測試一下。

#include <lua.hpp>
#include <iostream>
using namespace std ;

int main ()
{
    lua_State * L = lua_open ();
    lua_cpcall (L , luaopen_base , 0 );

    if (luaL_loadfile (L , "test.lua" ) || lua_pcall (L , 0 , 0 , 0 ))
        cout << lua_tostring (L , - 1 )<< endl ;

    lua_close (L );

    system ("pause" );
    return 0 ;
}工具

    test.lua:

print (" Hello World!" )開發工具

    makefile:

all : main.exe
#all:rebuild
    main.exe

main.exe : main.o
    g++ -o $@ $^ -llua5.1

main.o : main.cpp
    g++ -c main.cpp

clear :
    -del *.exe *.o

rebuild : clear main.exe測試

    直接make,編譯、鏈接、運行一次搞定。

g++ -c main.cpp
g++ -o main.exe main.o -llua5.1
main.exe
Hello World!
請按任意鍵繼續. . .ui

相關文章
相關標籤/搜索