標籤:vs2010 property 屬性管理 屬性工作表 c++
從問題入手拋出問題
在我的電腦上原本安裝了VS2010專業版,現在由於項目的需要又安裝了VS2015,但原來的VS2010用不了,在VS2010下編譯器時報如下錯誤:
1>TRACKER : error TRK0002: Failed to execute command: “”C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\CL.exe” @C:\Users\Administrator\AppData\Local\Temp\tmp6095048feb5e4db6845129a7e84fde38.rsp”. 操作標識符不正確。
解決方案
從這個錯誤提示中我們可以發現,用VS2010編譯時間用的是VS2015的編譯器(Visual Studio 14.0),而且是64位的,說明是用的編譯器不匹配,那如何設定回VS2010的編譯器呢?
通過Google找到了如下答案:
菜單View->Property Manager->Debug|Win32->Microsoft.Cpp.Win32.user,雙擊它開啟設定頁,查看VC++ Directories->Executable Directories值,我們會發現果然設定成了VS2015的編譯器,將它改了,設定成VS2010安裝目錄下的VC\bin目錄,如我的是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。
Property Manager
再次編譯器,會發現這個錯誤沒有了,完美搞定!
但Property Manager這個設定以前還真沒怎麼用過,它有什麼功能呢?它與右鍵工程->Properties的屬性頁面又有什麼區別呢?於是對它進行了深一步的探索!
深入研究概念性瞭解
首先,明白兩個概念:Project Property和Property Sheet。
Project Property:又稱項目屬性,是你當前項目的屬性配製,儲存在你工程的配製檔案中,ProjectName.vcxproj中。
Property Sheet:又稱屬性工作表,可用於多個工程的屬性配製,可以自己建立添加屬性配製,也可以使用系統預設的屬性工作表,儲存在.props為拓展名的檔案中。而屬性工作表(Property Sheet)的添加和管理就是在Property Manager中進行設定的。
Property Manager的使用
- 開啟Property Manager視窗。菜單View->Property Manager或View->Other Windows->Property Manager。可看到如下介面:
Property Manager
- 屬性的設定。雙擊屬性工作表名稱(如Microsoft.Cpp.Win32.user)就可以對它進行設定了。你會發現它的配製項與右鍵工程->Properties開啟的項目屬性是一樣的。Microsoft.Cpp.Win32.user是當前系統使用者預設的屬性工作表,儲存在C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props中,使用這個使用者名稱登入作業系統,用VS建立的所用項目都會繼承這個屬性工作表的配製屬性。
- 設定VC++ Directories。在這個配製項中,我們可以設定VC++編譯、連結需要的各種工具和資源的路徑。
VC++ Directories
Executable Directories:可執行程式(如cl.exe、link.exe、lib.exe等)的路徑,一般會包含VC\bin的路徑;
Include Directories:要包含的標頭檔(如CRT的標頭檔)的路徑,一般會包含VC\include的路徑;
Reference Directories:引用的庫的路徑,如MFC的庫(VC\atlmfc\lib);
Libbrary Directories:要包含的lib庫的路徑,一般會包含VC\lib的路徑;
Source Directories:原始碼的路徑,一般會包含VC\crt\src的路徑;
Exclude Directories:不被包含檔案的路徑。
- 自訂宏。在配製工程屬性時你是否經常會看到一些宏,如(SolutionDir)、(Configuration)、$(OutDir)等,但你卻不知道如何更改它,這些都是MSBuild為你預定義的一些宏。其實你也可以定義一些自己的宏,甚至可以重寫原有的宏。方法如下:
User Macros
這時你在配製自己的工程屬性(如Additional Include Directories)時就能看到自己定義的宏了:
Use User Macros
- 添加或匯入Property Sheet,這個太簡單了,直接看圖:
Import and Export Property sheet
屬性的繼承關係
項目的屬性是分層的。 每一層會繼承前一層的值,但是繼承的值可以通過設定屬性來顯式地重寫。 下面是基本的繼承關係(繼承樹):
1. 來自 MSBuild CPP工具集的預設設定(..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props,它將被 ProjectName.vcxproj檔案匯入)。
2. Property sheets(屬性工作表),也就是Property Manager中設定的屬性工作表。
3. 工程檔案ProjectName.vcxproj .(可以重寫預設值和property sheet 中的設定)。
4. 每一項的中繼資料。
參考文章:https://msdn.microsoft.com/en-us/library/669zx6zc.aspx
著作權聲明:本文為博主原創文章,未經博主允許不得用於任何商業用途,轉載請註明出處。
帶你玩轉Visual Studio——Property Manager的配製