1

如何阻止 automake 添加 -I。到我的编译行?

似乎 automake 或 libtool 对象总是有一个类似于以下的编译命令:

g++ -DHAVE_CONFIG_H -I. -I./proj/otherdir -o myprog.o myprog.c

问题是我有两个同名的头文件....

./proj/otherdir/Header.h
./proj/thisdir/Header.h

每个标头都有一个名为 Header 的类,尽管每个标头都位于不同的命名空间中。因此,当我在 ./proj/thisdir 中构建时,“-I”。被包括在内,我无法进入 ./proj/otherdir 中的标题

我不知道如何摆脱最初的“-I”。出现。

有什么提示吗?

谢谢陈兹

4

4 回答 4

3

您所要做的就是在 Makefile.am 中设置

DEFAULT_INCLUDES =

然后世界上一切都很好。

陈兹

于 2009-11-03T21:52:47.923 回答
3

如果您的 API 在我编写时包含不同的标头

#include <Header.h>

这使得该 API 令人困惑且容易出错。

为什么不定义你的 API

#include <thisdir/Header.h>

#include <otherdir/Header.h>

然后,如果需要,您甚至可以引用同一源文件中的两个标头。您只需阅读包含行即可知道它实际包含的内容。

于 2009-11-03T21:57:47.650 回答
0

在您的应用程序的 configure.ac 或 configure.in 中查找,应该在那里

于 2009-11-03T21:32:21.040 回答
0

它并没有摆脱 -I.,但您可以在#include指令中放置相对路径:

#include "../otherdir/Header.h"
#include "../thisdir/Header.h"
于 2009-11-03T22:26:49.223 回答