我目前正在尝试将splint作为Visual Studio 2010中的外部工具提供。
查找文件的所有包含时出现问题,因为似乎INCLUDE变量仅在构建时设置,我还没有找到以任何方式提取包含文件的任何其他可能性。
我的问题:有没有办法从当前文件的项目属性页面中提取IncludeDir字段,最好是使用VC ++的AdditionalIncludeDirectories?
答案 0 :(得分:1)
另请注意,AdditionalIncludeDirectories是每个文件,因为它可以针对单个源文件以及项目级别进行更改,如果它包含宏,它也可以针对每个源文件进行不同的评估!
我不熟悉通过API驱动MSBuild对象,但是IDE使用了它。无论是通过这种方式还是通过简单地运行MSBuild.exe,您需要让它找出所有属性,条件等,然后告诉您结果。如果一切都表现良好,您可以创建一个目标,该目标也使用ClCompile项目数组并以某种方式发出%(AdditionalIncludeDirectories)
元数据,例如将其写入文件或以某种方式将其传递给您的其他工具。这就是用于为CL生成/I
参数的内容,您可以获得相同的值。
如果事情表现不佳,在详细的构建过程中需要更改必要的值,则需要像ClCompile目标一样完成相同的prelims。或者只是用你自己的方法覆盖ClCompile(使用目标的最后一个定义),所以它肯定在同一个上下文中。
无论哪种方式,都有一些地方可以将构建脚本文件自动包含到所有项目中,因此您可以在那里添加您的内容或使用命令参数(我认为)到MSBuild添加另一个包含。
-John