参数 -S -save-temps
工作正常,只要我不在具有相同名称的文件上使用它们。
考虑以下情况:我有一个带有主目录的项目和一个带有名称的子目录 subDir
并且在两个目录中都放置了带有名称的文件 file.c
。如果我现在打电话 gcc -S -save-temps file.cpp subDir/file.c
只有一个名称的中间文件 file.i
将生成。
这是预期的行为,作为man文件 gcc
告诉我,在使用时,中间文件将始终放在当前路径中 -save-temps
。
我的问题是,我正在研究我事先不知道的项目。很有可能,有人在他的Makefiles中构建了上面提到的例子。在那种情况下,我会被卡住,因为我需要两个中间文件。
我正在构建的系统中有几个字(为了更好地理解):我的工具使用 make --just-print
收集调用,项目的make文件调用。我扫描这些调用编译器调用并添加 -save-temps
和 -S
选项。目的是获取在编译项目过程中使用的每个预处理文件。
你是否有任何想法,即使上面提到的例子应该出现,我怎么能得到每个预处理的文件?