Visual Studio 環境設定
如果你的 Project 不是單一執行檔,而是搭配其它檔案才能正常執行,那麼通常會設定 Debug 與 Release 兩組環境;如果再搭配 Win32 與 x64 的話就有 4 組了。有點麻煩?對吧!
所以我希望把測試環境設定在一個固定的地方 (例如 Bin 目錄下),這樣相關的檔案只要放一組就可以了,然後利用 Post-Build Event 把編譯過的執行檔複製到這裡就可以測試了。
Project property 該如何設定呢?首先針對所有 Configurations 與 Platforms 設定 Post-Build Event 為
copy "$(TargetPath)" "$(SolutionDir)Bin"
其中雙引號是為了防止路徑與檔名中間有空白字元,而我把測試環境設定在 Solution 目錄下的 Bin 子目錄,若不使用 Solution 目錄的話,Project 目錄也可以
接著設定要 Debug 的程式與工作目錄 (Platform 似乎沒辦法一次設定,所以 Win32 與 x64 要各做一次,不過內容都一樣)
首先是 Command,使用先前設定的路徑加上檔案名稱
$(SolutionDir)Bin\$(TargetFileName)
接著是 Working Directory
$(SolutionDir)Bin
這樣就可以在各個組態與平台間切換,而不需要重新設定所需要的相關檔案了。
這裡順便提一下,如果程式有 x64 的版本,可以在輸出檔名後面加上 x64 以資區別
經過同事的指點,實際上可以省掉 Post-Build copy 的動作,只要把 Output File 指到 Bin 目錄即可,也就是
$(SolutionDir)Bin\$(ProjectName).exe
只是這樣在 Clean 時會連該檔案一併刪除,如果要保留 Release 版本要記得先 Copy 出來。
Visual Studio 2010 在設定上跟 2008 又有點不太一樣。
實際上只要把 General | Output Directory 設定到共用的 Bin 目錄,Target Name 根據 Win32 / x64 設定成不同的名字
那麼 Debugging | Working Directory 可以統一設成 $(OutDir)
而 Linker | General | Output File 也可以統一設成 $(TargetPath),這樣就不需要在每一個組態做不同的設定,只要在前面 General 根據不同的組態各設定一次即可。
$(TargetPath) = $(OutDir) + $(TargetName) + $(TargetExtension)
所以我希望把測試環境設定在一個固定的地方 (例如 Bin 目錄下),這樣相關的檔案只要放一組就可以了,然後利用 Post-Build Event 把編譯過的執行檔複製到這裡就可以測試了。
Project property 該如何設定呢?首先針對所有 Configurations 與 Platforms 設定 Post-Build Event 為
copy "$(TargetPath)" "$(SolutionDir)Bin"
其中雙引號是為了防止路徑與檔名中間有空白字元,而我把測試環境設定在 Solution 目錄下的 Bin 子目錄,若不使用 Solution 目錄的話,Project 目錄也可以
接著設定要 Debug 的程式與工作目錄 (Platform 似乎沒辦法一次設定,所以 Win32 與 x64 要各做一次,不過內容都一樣)
首先是 Command,使用先前設定的路徑加上檔案名稱
$(SolutionDir)Bin\$(TargetFileName)
接著是 Working Directory
$(SolutionDir)Bin
這樣就可以在各個組態與平台間切換,而不需要重新設定所需要的相關檔案了。
這裡順便提一下,如果程式有 x64 的版本,可以在輸出檔名後面加上 x64 以資區別
2014/04/10
經過同事的指點,實際上可以省掉 Post-Build copy 的動作,只要把 Output File 指到 Bin 目錄即可,也就是
$(SolutionDir)Bin\$(ProjectName).exe
只是這樣在 Clean 時會連該檔案一併刪除,如果要保留 Release 版本要記得先 Copy 出來。
2014/12/29
Visual Studio 2010 在設定上跟 2008 又有點不太一樣。
實際上只要把 General | Output Directory 設定到共用的 Bin 目錄,Target Name 根據 Win32 / x64 設定成不同的名字
那麼 Debugging | Working Directory 可以統一設成 $(OutDir)
而 Linker | General | Output File 也可以統一設成 $(TargetPath),這樣就不需要在每一個組態做不同的設定,只要在前面 General 根據不同的組態各設定一次即可。
$(TargetPath) = $(OutDir) + $(TargetName) + $(TargetExtension)
留言