VS項目屬性配置總結


以下是針對VS2013下的VC++項目:

Debug和Release說明:

     Debug 通常稱為調試版本,它包含調試信息,並且不作任何優化,便於程序員調試程序。Release 稱為發布版本,它往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以便用戶很好地使用。 
     Debug 和 Release 並沒有本質的界限,他們只是一組編譯選項的集合。 

 


VS的目錄結構:

  VS采用解決方案+項目的結構,一個解決方案可以包含多個項目。

  每個解決方案(比如Solution)都會有個目錄Solution,里面包含解決方案配置文件(Solution.sln和Solution.sdf)和輸出文件(Debug或者Release)。

  在該解決方案下新建項目Pro1,就會在Solution目錄下新建一個Pro1的文件夾,Pro1文件夾下包含項目配置文件(Pro1.vcxproj)、中間文件(Debug或Release),同時所有.cpp和.h文件都會在該文件夾下面。

  由上面敘述可以總結出,管理器(解決方案或項目)都會對應一個總的文件夾,這個管理器文件夾下存放本管理器的配置文件以及子管理器。另外,默認情況下,項目屬性設置的目錄起點為項目配置文件所在位置,實際上就是項目頭文件和源文件所在位置。

  vs中建立默認的C#項目和建立默認的C++項目生成的目錄結構是不一樣的。如果是C#項目,則解決方案總文件夾下就只包含解決方案配置文件sln和一個項目總文件夾(共兩個東東),而項目總文件夾下包含c#源文件、項目配置文件proj、一個Properties屬性文件夾、一個obj文件夾和一個bin文件夾,其中obj和bin文件夾下都包含debug和release兩個文件夾。obj文件夾下存放中間編譯結果(擴展名更加項目類型而不同),而bin文件夾下存放最終生成的結果(擴展名一般為exe或dll)。

  如果是C++項目,則解決方案總文件夾下就只包含解決方案配置文件sln和一個項目總文件夾和一個Debug文件夾以及一個Release文件夾(共四個東東,其中Debug和Release文件夾中存放最終生成的結果exe或dll,要注意如果不使用Release生成,則不存在Release文件夾),而項目總文件夾下包含C++源文件頭文件、項目配置文件和一個Debug文件夾以及一個Release文件夾(一定要注意,此處的Debug和Release文件夾僅僅存放中間編譯結果obj,不存放exe和dll之類的東西。如果不使用Release編譯,則沒有對應的Release文件夾)。

VS的項目屬性:

  默認“常規“欄目中,“輸出目錄”為$(SolutionDir)$(ConfigurationName):調試時會在解決方案文件夾下建立一個Debug(ConfigurationName的值為Debug或Release)文件夾。該選項決定宏$(OutDir)的值和中間生成的鏈接器用的如xx.ilk和xx.pdb文件的輸出位置。

  $(ConfigurationName)表示工程的宏,可以在連接器-》輸入-》附加依賴項中查看和修改(不建議)所有宏的具體值,如:$(SolutionDir)為解決方案的目錄。

  默認“鏈接器”欄目下的“常規”選項下的“輸出文件”選項為$(OutDir)$(TargetName)$(TargetExt)。其中$(OutDir)由常規-》輸出目錄決定,$(TargetName)由常規-》目標文件名決定,$(TargetExt)由常規-》目標文件后綴決定。該選型決定最終輸出的exe文件的位置。

  如果常規-》目標文件名和常規-》目標文件后綴沒有決定$(TargetName)$(TargetExt)的值,那么“鏈接器”欄目下的“常規”必須顯示確定輸出exe文件的文件名和后綴,然后啟動調試生成exe后,根絕exe文件反向確定$(TargetName)$(TargetExt)的值。

  總結:默認情況下“輸出目錄”和“輸出文件”兩個屬性對應的目錄是一樣的,這樣用着方便(當然,輸出文件的值在輸出目錄的值的基礎上還包含有exe文件名)。如果兩個不一樣,則中間生成的鏈接器用的如xx.ilk和xx.pdb文件等在輸出目錄,而最終生成的xx.exe文件在“輸出文件”屬性設置的目錄中。

 

  “調試”欄目中的“工作目錄”項,這個屬性默認情況下是空的,但表示工作目錄是工程目錄,也就是工程配置文件ssyy.vcproj所在目錄。“工作目錄”屬性作用是程序通過VS運行后唯一識別的默認目錄,即工作后只認識這個目錄,進行文件的讀寫等操作都是對這個目錄而言。注意:vs中工作目錄的設置是給調試用的,也即你啟動調試后,啟動一個新進程,自動把這個新進程的工作目錄設置為vs項目屬性中的工作目錄,然后新進程啟動對應的exe程序。但是如果不使用vs的調試啟動exe,而是直接雙擊exe文件啟動一個新進程時,會自動把這個新進程的工作目錄設置為exe文件所在的目錄,這是和vs啟動調試不同的地方。所以如果發布的時候不把工作目錄內的東西拷到exe所在的目錄內,就會運行出錯,因為此時工作目錄不再是vs中設置的了,而是exe文件所在的目錄。

  “調試”欄目中的“命令(Command)”屬性項,【這個屬性表示調試器要啟動的exe文件的全名】,包括路徑名,默認為$(TargetPath),而TargetPath就表示目標輸出文件的全路徑名,所以一般情況下它代表的值就等於“輸出文件”屬性代表的值。

  “鏈接器”欄目下的“輸入”選項下的“附加依賴項”項。此項是設置程序鏈接時使用的靜態庫。相當於鏈接已經編譯好了的“代碼”。由此我們可以簡單的認為這些庫就相當於我們自己寫的.cpp文件,只不過這些庫是編譯好了的.cpp而已。

 

  另外:VC++這個選項下面的相關目錄表示VS所包含的C++的庫的位置和信息。

 

部分參考:http://blog.csdn.net/yyhero1/article/details/19272637


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM