如何阻止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
答案 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"