Come faccio a smettere automake di aggiungere -I. alla mia linea di compilazione?
Domanda
Come faccio a smettere automake di aggiungere -I. alla mia linea di compilazione?
Sembra automake o libtool oggetti hanno sempre un comando di compilazione simile a:
g++ -DHAVE_CONFIG_H -I. -I./proj/otherdir -o myprog.o myprog.c
Il problema è che ho due file di intestazione con lo stesso nome ....
./proj/otherdir/Header.h
./proj/thisdir/Header.h
Ogni intestazione ha una classe denominata intestazione, anche se ognuno è in uno spazio dei nomi diverso. Così, quando sto costruendo nel ./proj/thisdir, il "-I". viene incluso e non riesco a raggiungere l'intestazione in ./proj/otherdir
Non so come sbarazzarsi di quella iniziale "-I". che appare.
Eventuali suggerimenti?
Grazie Chenz
Soluzione
tutto quello che dovete fare è impostare nella Makefile.am
DEFAULT_INCLUDES =
e poi tutto è buono nel mondo.
chenz
Altri suggerimenti
Se l'API include le intestazioni differenti quando scrivo
#include <Header.h>
che rende tale API confuso e soggetto ad errori.
Perché non definire la vostra API come
#include <thisdir/Header.h>
e
#include <otherdir/Header.h>
Poi si potrebbe anche fare riferimento a entrambe le intestazioni nello stesso file sorgente, se necessario. E si sa solo dalla lettura della linea comprendono ciò che in realtà comprende.
Cerca nel configure.ac o configure.in per la vostra applicazione, dovrebbe essere in là
E non sbarazzarsi di -I, ma si può mettere percorsi relativi nelle direttive #include
:.
#include "../otherdir/Header.h"
#include "../thisdir/Header.h"