在我的電腦上原本安裝了 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è)置的。
http://wiki.jikexueyuan.com/project/visual-studio/images/94.png" alt="" /> Property Manager
屬性的設(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)建的所用項目都會繼承這個屬性表的配制屬性。
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: 不被包含文件的路徑。
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="" />
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)系(繼承樹):