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

时间:2009-11-03 21:25:38

标签: c++ autoconf automake libtool

如何阻止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”。出现了。

任何提示?

由于 Chenz

4 个答案:

答案 0 :(得分:3)

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

DEFAULT_INCLUDES =

然后一切都在世界上很好。

Chenz

答案 1 :(得分:3)

如果您的API在我写

时包含不同的标题
#include <Header.h>

这会使API混乱且容易出错。

为什么不定义您的API

#include <thisdir/Header.h>

#include <otherdir/Header.h>

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

答案 2 :(得分:0)

查看你的app的configure.ac或configure.in,应该在那里

答案 3 :(得分:0)

它没有摆脱-I。但你可以在你的#include指令中放置相对路径:

#include "../otherdir/Header.h"
#include "../thisdir/Header.h"