(SetEnv)
我們都知道要設定必要 Include 與 Library 路徑, 程式才能正確的編譯.
例如:
想要編譯 DirectShow 的範例, 那麼你會需要設定 Windows SDK 與 DirectX路徑, 然而,如果把上面的絕對路徑, 寫死在專案設定裡面.
那麼當別人拿你的專案進行編譯時, 就要到專案設定裡一個一個改.
如果不幸, 打錯一個字或哪一個環節漏掉,
你就會看到成千上萬個錯誤訊息出來... 這可是會嚴重傷害新手幼小的心靈喔.
在本篇文章中, 相關的知識
對老手來說, 看到一編譯出現數百個錯誤,
直覺反應就是哪一個 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
請問一下 使用SetEnv的話
回覆刪除例如說:使用者未安裝java相關套件
只要我本身server端有作環境變數批次檔設定的話,使用者也可以做編譯?是這個意思嗎?