vs工程 vcproj和開發環境定義巨集---$(IntDir)和$(OutDir)
一、vs 基礎配置檔案解析
.vcproj是工程檔案,sln是解決方案檔案。一個解決方案裡面可以包含多個工程。
你開啟vcproj檔案編譯不了可能是因為這個工程裡面用到了同一個解決方案中其它工程的東西。
visual Studio.NET採用兩種檔案型別(.sln和.suo)來儲存特定於解決方案的設定,它們總稱為解決方案檔案。為解決方案資源管理器提供顯示管理檔案的圖形介面所需的資訊從而在每次繼續開發任務時,不會因開發環境而分散精力;
*.sln:(Visual Studio.Solution) 通過為環境提供對專案、專案項和解決方案項在磁碟上位置的引用,可將它們組織到解決方案中。
比如是生成Debug模式,還是Release模式,是通用CPU還是專用的等
*.suo: (solution user opertion) 解決方案使用者選項記錄所有將與解決方案建立關聯的選項,
以便在每次開啟時,它都包含您所做的自定義設定。
.suo是solution user option的縮寫,它是很重要的檔案,它儲存了使用者介面的自定義配置,包括佈局、斷點和專案最後編譯的而又沒有關掉的檔案(下次開啟時用)等,以便於下一次你開啟Visual Studio可以恢復這些設定,因此不要隨便刪除也無法刪除,況且它們就是隱藏檔案,所以不要管它們。 其實上面英文中解釋已經很清楚了,要申明的是PDB中不帶斷點資訊
二、vcproj簡介
vcproj的具體格式為xml格式,其中包含三個主要的節:platform,configuration,Files
platform:描述的只是x64,x86等不同的平臺。
configuration:描述的是編譯和連結器的環境配置資訊。可以通過vs08或者vs05的專案屬性進行設定,也可以手動的進行設定。
Files:描述的是編譯時需要的各種cpp,h檔案,其中也會分節點,Filter描述的是目錄,Files描述的是具體的檔案。
三、使用者自定義開發環境巨集
檢視->屬性管理器->使用者巨集
例如$(IntDir)和$(OutDir)
下面的列表是對使用者巨集的解釋
ConfigurationName | 配置名字,通常是Debug或者Release |
IntDir | 編譯器使用的中間目錄,產出obj檔案 |
OutDir | 連結器使用的輸出目錄 |
ProjectDir | 專案目錄 |
ProjectName | 專案名字 |
SolutionDir | 解決方案目錄 |
TargetDir | 目標輸出檔案所在的目錄 |
TargetExt | 目標輸出的副檔名 |
TargetFileName | 目標輸出檔名,包括副檔名 |
TargetName | 目標輸出名,不包括副檔名 |
TargetPath | 目標輸出檔案的全路徑名 |
例子:
配置屬性
常規
輸出目錄:$(SolutionDir)$(Configuration)\
中間目錄:$(Configuration)\
目標檔名:$(ProjectName)
目標副檔名:.exe
生成日誌檔案:$(IntDir)\$(MSBuildProjectName).log
除錯
命令:$(TargetPath),表示偵錯程式要啟動的exe全名,TargetPath就表示目標輸出檔案的全路徑名,所以一般情況下它代表的值就等於“輸出檔案”屬性代表的值
工作目錄:$(ProjectDir)
VS 預設情況下會建立並使用預編譯標頭檔案(也就是自動建立 StdAfx.h 和 StdAfx.cpp 這兩個檔案),以便在編譯時加快編譯速度,預編譯器將它編譯後,會生成一個 Pre-compiled header ,也就是 pch 檔案,這樣下次就可以直接使用這裡已經編譯好了的程式碼了。