在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)
,项目在不同的解决方案中共享。
答案 0 :(得分:3)
$展开属性,%展开项目定义。查看vcxproj的文本,您可以看到差异。
您可以在项目文件中定义自己的属性,建议的位置在“UserMacros”下。 Yuo可以定义你喜欢的东西
$(PROJECTDIR)...... \ 在那里,稍后使用$(DependsBaseDir)。 AAMOF甚至可以使用适用于C#字符串的表达式。
如果您不想编辑项目本身,可以将其放在单独的.props文件中并手动导入或使用属性管理器。