参数-S -save-temps
工作正常,只要我不在同名文件上使用它们。
考虑以下情况:我有一个项目,有一个主目录和一个名为subDir
并且在这两个目录中都放置了名为file.c
。如果我现在打电话gcc -S -save-temps file.cpp subDir/file.c
只有一个具有该名称的中间文件file.i
将被生成。
这是预期的行为,作为 man 文件gcc
告诉我,当使用时,中间文件将始终放置在当前路径中-save-temps
.
我的问题是,我正在从事我事先不知道的项目。很可能有人在他的 Makefile 中构建了上述示例。在这种情况下,我会被卡住,因为我需要两个中间文件。
对我正在构建的系统说几句话(为了更好地理解):我的工具使用make --just-print
为了收集调用,将调用项目的 make 文件。我扫描这些调用以查找编译器调用并添加-save-temps
and -S
选项。目的是获取编译项目过程中使用的每个预处理文件。
您有什么想法,即使上面提到的示例应该出现,我如何才能获取每个预处理文件?
在 gcc 4.5 中你可以使用该选项-save-temps=obj
当使用-o
选项。这会将中间文件保存在与输出文件相同的目录中,这可以帮助防止当您使用不同的源目录和输出目录具有相同的文件名时出现问题。
gcc -save-temps=obj -c dir1/foo.c -o dir1/foo.o
gcc -save-temps=obj -c dir2/foo.c -o dir2/foo.o
中间文件将另存为dir1/foo.*
and dir2/foo.*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)