2013-05-26 69 views
1

在Visual Studio 2012 C++項目屬性頁,宏對話框

我們可以找到不同的宏擴展語法,

$(TargetPath) 
%(OutputFile) 
@(_TargetFramework20DirectoryItem) 

有什麼不同?


順便說一句,我們可以在Visual Studio 2012中輕鬆定義我們自己的新宏嗎?除了創建一個新的項目屬性表。

我只是想要一個簡單的新宏,如果是的話,我所有的依賴都可以基於這個宏來計算。

例如:

$(DependsBaseDir) = $(ProjectDir)..\..\..\ 
$(IncludePath) = $(DependsBaseDir)include;$(DependsBaseDir)abc\inc;$(DependsBaseDir)xyz\pub_inc 
$(LibraryPath) = $(DependsBaseDir)lib 

使用項目性質,我不能存檔我的目的。由於$(DependsBaseDir)取決於$(ProjectDir)我必須使用環境變量,這是一個非常非常糟糕的決定,並且很難在機器之間移動項目。或者我必須重複$(DependsBaseDir)無處不在的值。如果$(DependsBaseDir)改變了,它確實改變,修復依賴是一個災難。我必須計算正確的點,然後將其替換到任何地方......這個簡單的例子已經夠難了。不要說$(SolutionDir),項目在不同的解決方案中共享。

回答

3

$展開屬性,%展開一個項目定義。看看vcxproj的文本,你可以看到不同之處。

您可以在項目文件中定義自己的屬性,建議的位置在「UserMacros」下。 Yuo可以定義你的東西,如

$(ProjectDir)...... \ 那裏,並在稍後使用$(DependsBaseDir)。 AAMOF甚至可以使用適用於C#字符串的表達式。

如果您不想編輯項目本身,可以將它放在單獨的.props文件中,然後手動或使用屬性管理器導入。

+0

就是這樣。我比較vs2010和vs2012。 「用戶宏」是vs2012中的新功能。將嘗試它。 – Raymond

+0

vs2012中的項目設置中沒有「用戶宏」。它仍然在.props文件中。 – Raymond