我目前正在尝试将splint作为Visual Studio2010的一个外部工具。
它在查找文件的所有包含文件时存在问题,因为似乎只在构建时设置了包含变量,并且我还没有发现以任何方式提取包含文件的任何其他可能性。
我的问题是:有没有办法从当前文件的项目属性页中提取IncludeDir字段,最好是使用VC++的AdditionalIncludeDirectories?
发布于 2014-09-19 01:42:21
还要注意,AdditionalIncludeDirectories是针对每个文件的,因为它可以针对单个源文件以及在项目级别上进行更改,并且如果它包含宏,那么它也可以对每个源文件进行不同的评估!
我不熟悉如何通过API驱动MSBuild对象,但它是由集成开发环境使用的。无论是通过这种方式,还是通过简单地运行MSBuild.exe,您都需要让它找出所有的属性、条件等,然后告诉您结果。如果一切正常,您可以创建一个目标,该目标也使用ClCompile项数组并以某种方式发出%(AdditionalIncludeDirectories)元数据,例如将其写入文件或以某种方式将其传递给其他工具。这就是用来生成CL的/I参数的方法,您可以获得相同的值。
如果在详细的构建过程中更改了必要的值,那么您也需要像ClCompile目标通常所做的那样进行相同的预备工作。或者只需使用您自己的ClCompile (使用的是目标的最后一个定义),因此它肯定在相同的上下文中。
无论哪种方式,在某些地方,构建脚本文件都可以自动包含到所有项目中,所以您可以在那里添加内容,或者使用MSBuild的命令参数(我认为)来添加另一个包含。
-John
https://stackoverflow.com/questions/25908643
复制相似问题