1

我想将依赖目标添加到我的 Makefile 中,我知道这可以通过 makedepend 或 g++ -MM 选项来完成,我愿意使用它们中的任何一个,但我更喜欢 -MM 选项,因为它允许我排除标准库(我愿意不知道makedepend能不能做到)。

问题是我在我的应用程序中使用了一些外部库头文件,并且我希望将这些头文件从生成的依赖项中排除,那么如何从这些生成的依赖项中排除某些目录。 [Edit-start]我已经尝试过使用grep -v,但问题是如果排除的行是某个目标中的最后一个换行行,则由于末尾的转义“\”字符,下一个目标将连接到该目标在它之前的行导致损坏的依赖规则。除此之外,通过库头解析它们所需的时间[Edit-end]

另一个问题是,我如何编辑生成的目标文件目标的后缀,我正在使用一个 Makefile,它通过使用这样的目标来编译通过变量提供的源文件:

%.o: %.cpp
    g++ $< -o$*.o ...
4

2 回答 2

1

第一个问题(外部库)可以通过首先使用grep -v然后传递输出来解决,该输出sed 'N;s/\\\n\(.*\.o\)/\n\1/;P;D'删除不需要的转义字符'\',以解决由于grep -v. 但是通过外部库头解析它们的时间开销仍然保持原样。

第二个问题(生成的目标后缀编辑)可以通过 sed 解决,也可以在生成的目标规则中使用sed 's/.o:/$(MY_SUFFIX):/'where $(MY_SUFFIX)is the suffix to replace 。.o

于 2013-09-09T08:18:55.253 回答
0

#pragma GCC system_header是识别系统头文件的 gcc pragma。

您可以将代理标头与此编译指示一起使用,其中包括库标头

//Proxy_header.h
#ifndef PROXY_HEADER_H
#define PROXY_HEADER_H

#pragma GCC system_header

#include "external_library.h"

#endif

但后处理依赖项似乎更干净。


-MF file似乎是您要编辑依赖文件后缀的 gcc 选项。

于 2013-09-08T14:59:12.397 回答