VS項目的文件組織方式

VS項目的文件組織方式
VC6.0之後的VC (VS)系列使用解決方案(Solution)來替代原來的工作空間,用於組織和管理多個相關的項目(Project)。VS中的每個管理器(解決方案或項目)都會對應一個總的文件夾,這個管理器文件夾下存放本管理器的配置文件以及子管理器。以C#項目爲例,解決方案管理器總文件夾下包含解決方案配置文件*.sln和項目子管理器文件夾,而項目子管理器文件夾下包含C#源文件*.cs、項目配置文件*.csproj、Properties屬性文件夾、obj文件夾和bin文件夾。其中obj和bin文件夾下各包含debug和release兩個文件夾。obj文件夾下存放中間編譯結果,bin文件夾下存放最終生成的exe或dll文件。

常用項目屬性和系統默認配置變量
通常程序開發步驟包括編輯程序、編譯程序、裝配鏈接程序、程序調試測試、安裝部署。表1給出了程序開發過程中常用的系統變量名和意義:

系統變量 變量含義
$(ConfigurationName) 配置名,通常是debug或release
$(IntDir) 編譯器使用的中間目錄,產出obj文件
$(OutDir) 鏈接器使用的輸出目錄
$(ProjectDir) 項目目錄
$(ProjectName) 項目名
$(SolutionDir) 解決方案目錄
$(TargetDir) 目標輸出文件所在的目錄,產生exe文件
$(TargetExt) 目標輸出的擴展名
$(TargetFileName) 目標輸出文件名,包括擴展名
$(TargetName) 目標輸出名,不包括擴展名
KaTeX parse error: Unexpected character: '' at position 22: …tPath) 目標輸出文件的全̲路徑名 常規—>輸出目錄 項目…(OutDir)系統變量賦值,其默認屬性值爲(SolutionDir)(SolutionDir)(ConfigurationName),(SolutionDir)(SolutionDir)表示解決方案目錄,(ConfigurationName)的值爲debug或release。啓動編譯後會在解決方案文件夾下建立debug文件夾。

也就是說默認情況下的輸出目錄是在解決方案目錄下的debug或release文件夾下,當然這是針對C++型項目而言,C#型項目不一樣。

常規—>中間目錄
項目屬性的“常規”欄目中,“中間目錄(IntDir)”的作用是存儲鏈接器所需的輸入文件,默認屬性爲(ProjectDir)(ConfigurationName),編譯後會在MyProject項目文件夾下建立一個debug文件夾,並在該文件夾下生成MyProject.obj二進制文件。

接器—>常規—>輸出文件
項目屬性的“鏈接器”欄目下,“常規”選項下,“輸出文件”默認屬性爲(OutDir)(OutDir)(ProjectName).exe,其中(OutDir)MyProject.exe(OutDir)指的是輸出目錄,啓動鏈接後,在輸出目錄下生成MyProject.exe文件。(TargetDir)的值是由“輸出文件”指定的目錄決定的。也就是鏈接器最後生成的*.exe文件所在位置。

“輸出目錄”和“輸出文件”兩個屬性對應的目錄默認情況下是一樣的,這樣用着方便。如果兩個不一樣,則鏈接器所需的*.ilk和*.pdb等中間文件在“輸出目錄”,而最終生成的exe文件在“輸出文件”屬性設置的目錄中。

調試—>命令
項目的“輸出目錄”屬性值決定着系統變量(OutDir)(OutDir)的值,而項目的“輸出文件”的屬性值決定着(TargetDir)和(TargetPath)調(TargetPath)的值。程序調試時,系統變量(OutDir)的值是最先確定的,而(TargetDir)(TargetDir)和(TargetPath)的值是在鏈接器生成exe文件後才確定的。

“調試”欄目中的“命令(Command)”屬性項,這個屬性表示啓動調試器時執行的exe文件“全路徑名+文件名”,默認爲鏈接器生成的$(TargetPath)目錄,當然你也可以手動更改“命令”屬性的值。

單擊調試按鈕(VS中的那個小三角形按鈕),VS會起動圖中所示目錄下的exe文件。一般來說“鏈接器”—>“輸出文件”與“調試”—>“命令”中的文件位置、名稱是相同,以表示鏈接器生成的文件和調試時使用的文件一樣。一言以蔽之,①<“調試”—>“命令”>、②TargetPath、③輸出文件,④輸出目錄(OutDir) 默認情況下是處於同一個目錄,並呈現出前一個緊密依賴於後一個的關係。

調試—>工作目錄
工作目錄(WorkingDirection )與執行目錄(Command)可以不同,它是程序工作運行過程中默認讀取的目錄,調試時是將工作目錄下的文件作爲附加參數添加到執行目錄的exe文件中去調試執行。“調試”欄目中的“工作目錄”項,默認屬性值爲$(ProjectDir),即工程配置文件MyProject.vcproj所在目錄,調試過程中它會隨着OpenFileDialog、SaveFileDialog等對象所確定的目錄而改變。對於靜態鏈接的lib和dll庫文件可以放入exe所在的執行目錄,而動態加載的dll一般放在工作目錄,比如插件就放在工作目錄。此外,程序運行過程中生成一個txt文本文件或讀取一些配置文件,如果在創建或讀取過程中未指定絕對路徑,只指定其文件名,那麼默認的路徑就是工作目錄。

VS中工作目錄是用於調試過程,只有在調試時,VS纔會把項目配置屬性中的工作目錄設置爲執行進程的工作目錄,然後再啓動對應的exe程序。如果用戶選擇直接雙擊一個exe程度啓動新進程,VS會自動把exe文件所在的目錄設置爲新進程的工作目錄。因此,在軟件部署發佈的時候,需把工作目錄內的文件拷貝到exe所在的執行目錄內,否則就會運行出錯。

鏈接器—>輸入—>附加依賴項
“鏈接器”欄目下,“輸入”選項下,“附加依賴項”屬性。此項是設置程序鏈接時使用的靜態庫的名稱。相當於鏈接已經編譯好了的“代碼”。由此我們可以簡單的認爲這些庫就相當於我們自己寫的源文件,只不過這些庫是編譯好了的源文件而已。
轉載自:
https://vvingerfly.github.io/2018/06-09-VS-ProjectConfiguration/

發佈了23 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章