帶你玩轉Visual Studio——Property Manager的配製

來源:互聯網
上載者:User

標籤: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的使用
  1. 開啟Property Manager視窗。菜單View->Property Manager或View->Other Windows->Property Manager。可看到如下介面:

    Property Manager
  2. 屬性的設定。雙擊屬性工作表名稱(如Microsoft.Cpp.Win32.user)就可以對它進行設定了。你會發現它的配製項與右鍵工程->Properties開啟的項目屬性是一樣的。Microsoft.Cpp.Win32.user是當前系統使用者預設的屬性工作表,儲存在C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props中,使用這個使用者名稱登入作業系統,用VS建立的所用項目都會繼承這個屬性工作表的配製屬性。
  3. 設定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:不被包含檔案的路徑。
  4. 自訂宏。在配製工程屬性時你是否經常會看到一些宏,如(SolutionDir)、(Configuration)、$(OutDir)等,但你卻不知道如何更改它,這些都是MSBuild為你預定義的一些宏。其實你也可以定義一些自己的宏,甚至可以重寫原有的宏。方法如下:

    User Macros
    這時你在配製自己的工程屬性(如Additional Include Directories)時就能看到自己定義的宏了:

    Use User Macros
  5. 添加或匯入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的配製

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.