2013-05-26 67 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