鍍金池/ 教程/ Java/ 帶你玩轉(zhuǎn) Visual Studio——Property Manager 的配制
帶你玩轉(zhuǎn) Visual Studio——incremental linking(增量鏈接)的作用
帶你玩轉(zhuǎn) Visual Studio——帶你高效管理代碼
帶你玩轉(zhuǎn) Visual Studio——VS2010 斷點進不去解決方法
CString 與 string、char*的區(qū)別和轉(zhuǎn)換
帶你玩轉(zhuǎn) Visual Studio——結(jié)局匯總
帶你玩轉(zhuǎn) Visual Studio——帶你理解多字節(jié)編碼與 Unicode 碼
帶你玩轉(zhuǎn) Visual Studio——Property Manager 的配制
字符集和字符編碼(Charset & Encoding)
帶你玩轉(zhuǎn)Visual Studio——帶你了解VC++各種類型的工程
帶你玩轉(zhuǎn) Visual Studio——帶你高效開發(fā)
帶你玩轉(zhuǎn) Visual Studio——開篇介紹
帶你玩轉(zhuǎn) Visual Studio——帶你新建一個工程
帶你玩轉(zhuǎn) Visual Studio——帶你多工程開發(fā)
帶你玩轉(zhuǎn) Visual Studio——帶你發(fā)布自己的工程庫
帶你玩轉(zhuǎn) Visual Studio——帶你理解微軟的預(yù)編譯頭技術(shù)
帶你玩轉(zhuǎn)Visual Studio——帶你管理多種釋出版本
帶你玩轉(zhuǎn) Visual Studio——帶你跳出坑爹的 Runtime Library 坑
非 MFC 工程中使用 MFC 庫
帶你玩轉(zhuǎn) Visual Studio——命令行編譯 C/C++程序

帶你玩轉(zhuǎn) Visual Studio——Property Manager 的配制

從問題入手

拋出問題

在我的電腦上原本安裝了 VS2010 專業(yè)版,現(xiàn)在由于項目的需要又安裝了 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”. 操作標識符不正確。

解決方案

從這個錯誤提示中我們可以發(fā)現(xiàn),用 VS2010 編譯時用的是 VS2015 的編譯器 (Visual Studio 14.0),而且是 64 位的,說明是用的編譯器不匹配,那如何設(shè)置回 VS2010 的編譯器呢? 通過 Google 找到了如下答案:

菜單 View->Property Manager->Debug|Win32->Microsoft.Cpp.Win32.user,雙擊它打開設(shè)置頁,查看 VC++ Directories->Executable Directories 值,我們會發(fā)現(xiàn)果然設(shè)置成了 VS2015 的編譯器,將它改了,設(shè)置成 VS2010 安裝目錄下的 VC\bin 目錄,如我的是:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。

http://wiki.jikexueyuan.com/project/visual-studio/images/93.png" alt="" />

再次編譯程序,會發(fā)現(xiàn)這個錯誤沒有了,完美搞定!

但 Property Manager 這個設(shè)置以前還真沒怎么用過,它有什么功能呢?它與右鍵工程->Properties 的屬性頁又有什么區(qū)別呢?于是對它進行了深一步的探索!

深入研究

概念性了解

首先,明白兩個概念:Project Property 和 Property Sheet。 Project Property:又稱項目屬性,是你當(dāng)前項目的屬性配制,保存在你工程的配制文件中, ProjectName.vcxproj 中。

Property Sheet:又稱屬性表,可用于多個工程的屬性配制,可以自己創(chuàng)建添加屬性配制,也可以使用系統(tǒng)默認的屬性表,保存在.props 為拓展名的文件中。而屬性表( Property Sheet)的添加和管理就是在 Property Manager 中進行設(shè)置的。

Property Manager 的使用

  1. 打開 Property Manager 窗口。菜單 View->Property Manager 或 View->Other Windows->Property Manager。可看到如下界面:

http://wiki.jikexueyuan.com/project/visual-studio/images/94.png" alt="" /> Property Manager

  1. 屬性的設(shè)置。雙擊屬性表名稱(如 Microsoft.Cpp.Win32.user )就可以對它進行設(shè)置了。你會發(fā)現(xiàn)它的配制項與右鍵工程->Properties 打開的項目屬性是一樣的。Microsoft.Cpp.Win32.user 是當(dāng)前系統(tǒng)用戶默認的屬性表,保存在 C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props 中,使用這個用戶名登錄操作系統(tǒng),用 VS 創(chuàng)建的所用項目都會繼承這個屬性表的配制屬性。

  2. 設(shè)置 VC++ Directories。在這個配制項中,我們可以設(shè)置 VC++ 編譯、鏈接需要的各種工具和資源的路徑。

http://wiki.jikexueyuan.com/project/visual-studio/images/95.png" alt="" /> VC++ Directories

Executable Directories:可執(zhí)行程序(如 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: 不被包含文件的路徑。

  1. 自定義宏。在配制工程屬性時你是否經(jīng)常會看到一些宏,如(SolutionDir)、(Configuration)、$(OutDir )等,但你卻不知道如何更改它,這些都是 MSBuild 為你預(yù)定義的一些宏。其實你也可以定義一些自己的宏,甚至可以重寫原有的宏。方法如下:

http://wiki.jikexueyuan.com/project/visual-studio/images/96.png" alt="" /> User Macros

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

http://wiki.jikexueyuan.com/project/visual-studio/images/97.png" alt="" />

  1. 添加或?qū)?Property Sheet。這個太簡單了,直接看圖:

http://wiki.jikexueyuan.com/project/visual-studio/images/98.png" alt="" /> Import and Export Property sheet

這樣你可以在創(chuàng)建同一類型的項目時都(導(dǎo)入進來)使用自己定義的屬性表,就可以多個項目使用相同的設(shè)置了,減少設(shè)置的負擔(dān)。 屬性的繼承關(guān)系

項目的屬性是分層的。 每一層會繼承前一層的值,但是繼承的值可以通過設(shè)置屬性來顯式地重寫。 下面是基本的繼承關(guān)系(繼承樹):

  1. 來自 MSBuild CPP 工具集的默認設(shè)置(..\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.Default.props,它將被 ProjectName.vcxproj 文件導(dǎo)入)。
  2. Property sheets (屬性表),也就是 Property Manager 中設(shè)置的屬性表。
  3. 工程文件 ProjectName.vcxproj .(可以重寫默認值和 property sheet 中的設(shè)置)。
  4. 每一項的元數(shù)據(jù)。

參考文章:https://msdn.microsoft.com/en-us/library/669zx6zc.aspx