2

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

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

有人知道实现这一目标的可能性吗?

4

1 回答 1

4

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

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

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

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

这种方法的问题是,该宏不再可以进行字符串操作。例如考虑以下:

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

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

于 2011-10-05T09:55:17.847 回答