2008年4月9日 星期三

[程式設計] 在 MINGW32 中, 指定長檔名包含空白目錄的方法

一旦搞懂 Makefile 的用法, 使用 make 就像喝 Coffee 一樣會上癮. 在 IDE 的行為越來越像烏龜的情況下. 在 Windows 你可能的選擇是 MINGW32.

但這裡有一個問題.

如何指定長檔名且包含空白?

 

在 MSYSGW32 中, 指定長檔名包含空白目錄的方法
ex:
   H:\Program Files\Microsoft Visual Studio 8\VC  如何表示?

<sol 1> 用環境變數 export  (標準答案) (即空白前面, 放三個 \\\ -> \\\[空白])
ex:
    export VCROOT=/h/Program\\\ Files/Microsoft\\\ Visual\\\ Studio\\\ 8/VC/
   

<sol 2> 直接在 Makefile 中指定變數即可. (即空白前面, 放一個 \)
ex:
    VCROOT=/h/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/

缺點: 與多人一起同時開發程式時, 每個人的路徑可能不同.
      這時由 SVN update 回來的 source code 還要改, 很麻煩.

所以 sol 2 的方法只適合個人開發使用.

問題:  為何不用雙引號把 H:\Program Files\Microsoft Visual Studio 8\VC 包起來?
原因是雙引號雖然可以設定, 但是無法在 Makefile 中加入一些字串的變化
如: ${PATH}\include.  

這樣會變成 "c:\Program File"\include

所以, 環境變數應該使用 sol 1 的方法

export VCROOT=/h/Program\\\ Files/Microsoft\\\ Visual\\\ Studio\\\ 8/VC/
 

將環境變數設定成下面字串
VCROOT='/h/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC/'

這樣就跟直接在 Makefile 設定變數一樣的效果, 而不同的使用者只要設定自己的環境變數即可.

 

by Jing

沒有留言:

張貼留言