VisualStudio 路徑和專案屬性配置
VC++專案解決方案總資料夾下只包含解決方案配置檔案sln、一個專案資料夾(如果有多個工程,則分別對應多個工程資料夾)、一個Debug資料夾、一個Release資料夾(其中Debug和Release資料夾中存放最終生成的結果exe或dll,如果不使用Release則不存在Release資料夾),而專案總資料夾下包含C++原始檔標頭檔案、專案配置檔案、一個Debug、一個Release資料夾(此處Debug和Release資料夾僅存放中間編譯結果obj,不存exe和dll之類東西)。
“General“->“OutputDirectory”為$(SolutionDir)$(Configuration)\
“Debugging”->“Command”項,使用除錯時從哪裡啟動exe檔案,預設$(TargetPath)
專案設定中可以使用的巨集,常用的有:
Configuration |
配置名字,通常是Debug或者Release |
IntDir |
編譯器使用的中間目錄,產出obj檔案 |
OutDir |
連結器使用的輸出目錄 |
ProjectDir |
專案目錄 |
ProjectName |
專案名字 |
SolutionDir |
解決方案目錄 |
TargetDir |
目標輸出檔案所在的目錄 |
TargetExt |
目標輸出的副檔名 |
TargetFileName |
目標輸出檔名,包括副檔名 |
TargetName |
目標輸出名,不包括副檔名 |
TargetPath |
目標輸出檔案的全路徑名 |
注意:除錯欄目下的所有選項都是為了除錯服務的,如果不用除錯按鈕,這些選項就不起作用。至於VC++目錄以及C/C++欄目是給編譯器起作用的,告訴編譯器在哪裡尋找標頭檔案、庫檔案之類的事情,或者設定其他一些編譯器選項。一些具體的案例請參考:http://blog.163.com/zhang_bo1983/blog/static/16992223020123753334981/。
開發過程中, Visual Studio 連結外部 lib 及 dll 檔案如何配置:
方法最簡單直接,壞處是會影響全域性的 PATH 設定,尤其是包含著大量測試用 dll 時。
2. 在 Visual Studio 全域性設定裡,把 dll 所在目錄新增到 PATH 裡:
通過 Visual Studio 選單 ==> 工具 ==> 選項 ==> 專案和解決方案 ==> VC++目錄,在下拉框裡選擇"可執行檔案",然後把 dll 所在路徑新增進去。
3. 直接把所有 dll 拷貝到 Visual Studio 工程目錄下,或是拷貝到生成可執行檔案的資料夾(預設情況下是Debug 或 Release 目錄)下:
這個方法也很簡單,但是當你有若干個工程時,你每次更新 SDK 及其 dll 檔案,你就要把所有的工程都更新,這個不符合檔案唯一性的工程性準則。
4. 在除錯程式時,讓 Visual Studio 幫你切換當前工作目錄到 dll 相應的目錄下:
在 Visual Studio ==> Project ==> Properties ==> SelectConfiguration ==> Configuration Properties ==> Debugging ==> Workingdirectory 裡填上 dll 所在目錄,這樣當在除錯程式時,Visual Studio 會把當前工作目錄切換到這個目錄下,從而會自動讀取本目錄下的dll 檔案。
這個方法的優點很明顯,簡單!副作用也很明顯,在你切換了當前工作目錄後,你可能會找不到程式的配置檔案,在程式裡寫的諸如"./config.ini"全部都找不到了;另外,你要把所有的dll 都放到這個工作目錄裡,否則一樣會提示說找不到 xxx.dll 的問題。
5. 最後一個方法,也是我認為最好的一個方法,在 VisualStudio 工程屬性裡把一個目錄臨時新增到 PATH 環境變數裡:
PATH=%PATH%;$(TargetDir)\DLLS
這樣就可以把 $(TargetDir)\DLLS 臨時新增到該工程所屬的系統 PATH 裡。
開發時可以根據專案的實際情況,靈活選用以上方法。