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

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

Какие-нибудь намеки?

Спасибо Ченз


person Crazy Chenz    schedule 03.11.2009    source источник


Ответы (4)


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

DEFAULT_INCLUDES =

и тогда все на свете хорошо.

Ченз

person Crazy Chenz    schedule 03.11.2009

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

#include <Header.h>

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

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

#include <thisdir/Header.h>

а также

#include <otherdir/Header.h>

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

person ndim    schedule 03.11.2009

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

person jfarrell    schedule 03.11.2009
comment
чего-чего? я не понимаю. Скажу, что я сам написал configure.ac и не устанавливаю -I. где-нибудь там. Просто чтобы быть уверенным, что я нашел свой файл .ac и свой скомпилированный скрипт конфигурации, и здесь нет упоминания о -I. - person Crazy Chenz; 04.11.2009

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

#include "../otherdir/Header.h"
#include "../thisdir/Header.h"
person Bill    schedule 03.11.2009
comment
Я считаю, что относительные пути выглядят неаккуратно. Я всегда предпочитаю использовать аргумент -I в строке компиляции. Спасибо хоть! - person Crazy Chenz; 04.11.2009