Visual Studio C编译器是否具有与GCC -M相同的功能?

时间:2009-11-23 17:48:08

标签: c visual-studio gcc makefile dependencies

我想自动生成一个Makefile依赖列表,但我使用的是Visual Studio 2005.如果我使用的是GCC,我可以传递-M(或其中一个变种)来创建这个依赖列表。

查看cl.exe的命令行选项,我看不到任何明显的结果。我可以通过后处理来处理调整输出,但越接近越好。

5 个答案:

答案 0 :(得分:5)

至少在Visual Studio 2005的cl.exe中,有选项/showIncludes

答案 1 :(得分:3)

我不得不处理那个确切的问题。我们想添加一个替换-M选项的脚本。我是这样做的:

  1. 找到源预处理器(以及包含路径和定义所需的内容)
  2. 在您需要的文件上运行它,它应该生成一个预处理版本。
  3. 大多数预处理器都有一个启用额外信息的开关(例如某些代码片段来自的文件)
  4. 编写一个简单的脚本来提取所有标题名称
  5. 创建一个集合,以便过滤掉重复项。
  6. 我就是这样做的,它起作用了。祝你好运!

答案 2 :(得分:2)

编译器将依赖项存储在中间.idb文件中。你也许可以从那里解析它。

请参阅fillna

你可以在那里找到所有包含前缀为“/ mr / inversedeps /”或“/ ipm / header /”的文件。

我认为您还应该在其他中间文件中找到依赖项,例如: “CL.read.1.tlog”。

答案 3 :(得分:0)

不直接使用cl.exe,但使用此包装器可以实现您正在寻找的内容:

http://msdn.microsoft.com/en-us/library/y209k0z6.aspx

答案 4 :(得分:0)

我们遇到了与Fortran完全相同的问题,最后不得不编写我们自己的迷你编译器来扫描源代码并遍历所有#includes