获取包含自定义构建步骤的目录

时间:2011-09-30 12:44:11

标签: visual-studio visual-studio-2010 msbuild propertysheet

我想知道在使用自定义构建步骤构建文件时是否有可能获取项目包含目录的列表。

想象一下以下情况:我的项目包括 A.cpp B.cpp C.blah 。在“C / C ++”字段下的项目属性中 - > “一般” - > “其他包含目录”我已指定了包含用于 A.cpp B.cpp 的目录的列表。现在对于 C.blah ,我确实指定了一个自定义构建工具并写入“命令​​行” - > “mytool.exe C.blah -I * Direcotries?* -o C.obj”。我现在如何在此步骤中获取为C / C ++指定的包含目录列表?当我点击“宏”时,没有这样的宏给我完整的包含列表。

是否有人意识到实现这一目标的可能性?

1 个答案:

答案 0 :(得分:3)

我想我找到了答案,但不完整。

可以在属性表中指定如下内容:

<PropertyGroup>
    <ProjectIncludeDir>@(ClCompile->'%(AdditionalIncludeDirectories)')</ProjectIncludeDir>
</PropertyGroup>

这将使宏$(ProjectIncludeDir)可用于自定义构建步骤,其中也包含include目录列表。

这种方法的问题是不再可以在此宏上执行字符串操作。例如,请考虑以下事项:

<ProjectIncludeDirDot>$(ProjectIncludeDir.Replace(';',','))</ProjectIncludeDirDot>

这导致@(ClCompile-&gt;'%(AdditionalIncludeDirectories)'中的宏$(ProjectIncludeDirDot)。似乎在宏观评估之后对变换进行评估,从而打破了替换。如果有人知道更好的解决方案,请...