Как мне запретить 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
Я не знаю, как избавиться от этой появляющейся начальной буквы "-I.".
Какие-нибудь намеки?
Спасибо Ченц
Решение
все, что вам нужно сделать, это установить в Makefile.am
DEFAULT_INCLUDES =
и тогда все в мире становится хорошо.
Ченц
Другие советы
Если ваш API включает в себя разные заголовки, когда я пишу
#include <Header.h>
это делает этот API запутанным и подверженным ошибкам.
Почему бы не определить свой API следующим образом
#include <thisdir/Header.h>
и
#include <otherdir/Header.h>
Тогда вы могли бы даже сослаться на оба заголовка в одном и том же исходном файле, если потребуется.И вы бы узнали, просто прочитав строку include, что она на самом деле включает.
Посмотрите в configure.ac или configure.in для вашего приложения, оно должно быть там
Это не избавляет от -I., но вы можете поместить относительные пути в свой #include
директивы:
#include "../otherdir/Header.h"
#include "../thisdir/Header.h"