2008年6月4日 星期三

[程式設計] 自動設定環境變數 -- SetEnv

(SetEnv)

我們都知道要設定必要 Include 與 Library 路徑, 程式才能正確的編譯.
例如:

想要編譯 DirectShow 的範例, 那麼你會需要設定 Windows SDK 與 DirectX路徑, 然而,如果把上面的絕對路徑, 寫死在專案設定裡面.

那麼當別人拿你的專案進行編譯時, 就要到專案設定裡一個一個改.
如果不幸, 打錯一個字或哪一個環節漏掉,

你就會看到成千上萬個錯誤訊息出來...  這可是會嚴重傷害新手幼小的心靈喔.

在本篇文章中, 相關的知識

snap003

 

對老手來說, 看到一編譯出現數百個錯誤,
直覺反應就是哪一個 Include 檔或 Library Path 沒設定好.
去檢查一下...

這一切如果使用自動環境變數設定, 就可以避免這個惡夢.

以前教的方法是要你到 [控制台] ->[系統] -> [進階] -> [環境變數] 設定.

今天教你使用 SetEnv.exe 自動設定環境變數, 你不需要使用滑鼠了!

只要使用者一開始在批次檔裡先指定各項 SDK 的路徑, 接下來, SetEnv 自動接手設定整個系統的環境變數. 只要在開發端測試 OK, 那麼就可以保證使用者下載後, 就可以正確的編譯你的範例程式.

 

如果你還不懂怎麼用環境變數與自己的編譯環境做整合, 請看下面的文章.

接下來, 只要兩個步驟.

        Step 1: 下載 SetEnv.exe
        Step 2: 把他放到 Windows 目錄裡面

 

怎麼設定?

  • 指定新的環境變數:
    語法:
        SetEnv   新的變數名稱 [空格]  [雙引號]路徑[雙引號]
    例如:
        SetEnv WSDK_DIR "c:\Program Files\Microsoft SDKs\\"
  • 在舊的環境變數中, 加入新的路徑:
    語法:
        SetEnv -a 要被增加路徑的變數名稱 %% [雙引號]路徑
        (注意: 只有一個雙引號, 兩個百分比)
    例如:
         SetEnv -a PATH %%"C:\Program Files\Microsoft Visual Studio 8\VC\bin

  • 使用公用變數範例
  • setEnv  VC_DIR "C:\Program Files\Microsoft Visual Studio 8\VC\\"   (定義變數)
    REM setEnv -a TEST ~VC_DIR~bin (引用 VC_DIR 建立新的變數)
    REM setEnv -a TEST %%~VC_DIR~lib (引用 VC_DIR 新增已經存在變數的內容:   變數前面加上兩個 %%)

下面是一個簡單的範例

------------------ configure.bat ---------------

@echo 搭配 SetEnv.exe
@echo home: http://www.codeproject.com/KB/applications/SetEnv.aspx

@echo 設定公共環境變數 (Common environment setup)
setEnv VC_DIR "C:\Program Files\Microsoft Visual Studio 8\VC\\"
SetEnv WSDK_DIR "c:\Program Files\Microsoft SDKs\\"
SetEnv JDK_DIR "c:\Program Files\Java\jdk1.5.0_15\\"
SetEnv VCROOT "/c/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/"
SetEnv JDKROOT "/c/Program\ Files/Java/jdk1.5.0_15/"

@echo 安裝好 DirectX 後, DXSDK_DIR 應該已經設定好了
@echo SetEnv DXSDK_DIR "C:\Program Files\Microsoft DirectX SDK (April 2007)\\"

@echo MinGW 環境變數設定 (MinSystem MinGW environment setup)
SetEnv -a PATH %%~VC_DIR~bin
SetEnv -a PATH %%~VC_DIR~..\Common7\IDE
SetEnv -a PATH %%~JDK_DIR~bin
SetEnv -a LIB %%~VC_DIR~lib
SetEnv LIB %%~VC_DIR~PlatformSDK\Lib

@echo 版本控制 trac 專用環境變數設定
SetEnv -a PATH %%"C:\Python25\Scripts

@echo Usage tips:
@echo     1. 在 Makefile 中 (用小括號)
@echo        $(PHDROOT)03_(svn)A_Fast_Algorithm_of_Eye_Blink_Detection/trunk
@echo     2. 在 MinGW 中 (用大括號)
@echo        cd ${PHDROOT}
@echo     3. 若目錄中有小括號, 則要用 \ 標明以免與其他命令搞混
@echo        cd ${PHDROOT}03_\(svn\)A_Fast_Algorithm_of_Eye_Blink_Detection/trunk/src/VideoServer
S

@echo ---------------------------------------------------
@echo   Environment settup ok!
@echo   Please restart your IDE and the MinSystem shell interface.
@echo ---------------------------------------------------
pause

@echo off


 

如果你對 SetEnv 怎麼做的有興趣, 可以參考我的網頁

        新增,刪除範例  專案下載

        Advanced Windows Programming (更多相關資訊)

 

Enjoy.

by Jing

1 則留言:

  1. 請問一下 使用SetEnv的話
    例如說:使用者未安裝java相關套件
    只要我本身server端有作環境變數批次檔設定的話,使用者也可以做編譯?是這個意思嗎?

    回覆刪除