Visual C ++项目属性@ $%宏

时间:2013-05-26 16:52:01

标签: c++ visual-studio visual-c++

在Visual Studio 2012 C ++项目属性页面中,宏对话框

我们可以找到不同的宏扩展语法,

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

有什么不同?


BTW,我们可以在Visual Studio 2012中轻松定义自己的新宏吗?除了创建一个新的项目属性表。

我只想要一个简单的新宏,如果是这样,我所有的依赖都可以根据这个宏来计算。

例如:

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

使用项目属性,我无法归档我的目的。由于$(DependsBaseDir)取决于$(ProjectDir)我必须使用环境变量,这是一个非常糟糕的决定,很难在机器之间移动项目。或者我必须在任何地方重复$(DependsBaseDir)值。如果$(DependsBaseDir)发生了变化,它会发生变化,修复取决于灾难。我必须计算正确的点,然后到处替换它...这个简单的例子很难。不要说$(SolutionDir),项目在不同的解决方案中共享。

1 个答案:

答案 0 :(得分:3)

$展开属性,%展开项目定义。查看vcxproj的文本,您可以看到差异。

您可以在项目文件中定义自己的属性,建议的位置在“UserMacros”下。 Yuo可以定义你喜欢的东西

$(PROJECTDIR)...... \ 在那里,稍后使用$(DependsBaseDir)。 AAMOF甚至可以使用适用于C#字符串的表达式。

如果您不想编辑项目本身,可以将其放在单独的.props文件中并手动导入或使用属性管理器。