2009-11-03 2 views
1

Как остановить automake от добавления -I. к моей линии компиляции?Как остановить 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 имеет класс с именем Header, хотя каждый из них находится в другом пространстве имен. Поэтому, когда я строю в ./proj/thisdir, «-I». включается, и я не могу попасть в заголовок ./proj/otherdir

Я не знаю, как избавиться от этого первоначального «-I». что появляется.

Любые подсказки?

Благодаря Chenz

ответ

3

все, что вам нужно сделать, это установить в Makefile.am

DEFAULT_INCLUDES = 

, а затем все хорошо в мире.

Chenz

0

Посмотрите в configure.ac или configure.in для вашего приложения, должны быть там

+0

сказать, что? я не понимаю. Я скажу, что я написал configure.ac самостоятельно, и я не устанавливаю -I. где угодно. Просто, чтобы убедиться, что я скопировал мой файл .ac и мой скомпилированный скрипт configure, и нет упоминания о «-I». –

3

Если API включает в себя различные заголовки, когда я пишу

#include <Header.h> 

, что делает этим API запутанными и ошибки.

Почему бы не определить свой API, как

#include <thisdir/Header.h> 

и

#include <otherdir/Header.h> 

Тогда можно даже обратиться к обоим заголовкам в том же исходном файле, если это необходимо. И вы бы знали, просто прочитав строку включения, что она на самом деле включает.

+0

Не мой код. Просто пытаюсь заставить его строить. –

0

Это не избавиться от -I, но вы можете поставить относительные пути в ваших #include директив:.

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

Я думаю, что относительные пути небрежно выглядят. Я всегда предпочитаю использовать аргумент -I в строке компиляции. Спасибо хоть! –