Visual Studio C编译器是否具有与GCC';s-M?
我想自动生成Makefile依赖项列表,但我使用的是VisualStudio2005。如果我使用的是GCC,我可以传递-M(或许多变体中的一个)来创建这个依赖项列表Visual Studio C编译器是否具有与GCC';s-M?,c,visual-studio,gcc,makefile,dependencies,C,Visual Studio,Gcc,Makefile,Dependencies,我想自动生成Makefile依赖项列表,但我使用的是VisualStudio2005。如果我使用的是GCC,我可以传递-M(或许多变体中的一个)来创建这个依赖项列表 通过查看cl.exe的命令行选项,我没有看到任何明显的内容。我可以通过后期处理调整输出,但越接近越好。不是直接使用cl.exe,而是使用此包装器,您可以实现所需: 我必须解决这个问题。我们想添加一个脚本来替换-M选项。我是这样做的: 查找源预处理器(以及所需的包含路径和定义) 在您需要的文件上运行它,它应该会生成一个预处理版本 大多
通过查看
cl.exe
的命令行选项,我没有看到任何明显的内容。我可以通过后期处理调整输出,但越接近越好。不是直接使用cl.exe,而是使用此包装器,您可以实现所需:
我必须解决这个问题。我们想添加一个脚本来替换-M选项。我是这样做的:
我就是这样做的,而且很有效。祝你好运 我们在Fortran中遇到了完全相同的问题,最后不得不编写自己的迷你编译器来扫描源代码并遍历Visual Studio 2005的cl.exe中的所有
#include
至少,编译器在中间.idb文件中存储依赖项。您可以从那里解析它
看
您可以在其中找到所有前缀为“/mr/inversedeps/”或“/ipm/header/”的包含文件
我认为您还应该在其他中间文件中找到依赖项,例如“CL.read.1.tlog”。这是否适用于gcc的
-M
标志?大多数编译器标志映射都很简单,但这几乎需要预处理器(或类似的东西)来运行。VC++编译器确实有一个只进行预处理的选项,但它不会这样做。OP需要的-M.*
设置是该软件包不支持的设置之一。如果已安装,请参阅ccFile.cfg
的底部,或者您可以使用Visual Studio来完成此任务。一个非常好的独立预处理器是mcpp
。您可以在这里找到它http://mcpp.sourceforge.net/
。我还没有实现它,但这似乎是最好的解决方案。使用VisualStudio听起来像是正确的路径,它避免了需要传递单独的标志集(一个用于依赖项,另一个用于构建)。不再需要编写任何东西mcpp
具备您所需的全部功能。您只需在使用GCC通常的标志(例如-MMD-MP
)编译源代码后调用它即可。您需要花多少时间来完成这项工作?