Как мне запретить automake добавлять -I.к моей строке компиляции?

StackOverflow https://stackoverflow.com/questions/1670226

Вопрос

Как мне запретить 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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top