Obecnie próbuję uzyskać program do kompilacji w systemie, nad którym nie mam kontroli.Zastąp domyślną ścieżkę wyszukiwania nagłówka
Problem, który mam jest katalogi zawierające wyglądać następująco:
/usr/include:
gmpxx.h gmp.h
/usr/local/include:
gmp.h
W moim pliku cpp, używam
#include <gmpxx.h>
a to znajdzie poprawny plik w /usr/include
jednak gdy gmpxx.h zawiera gmp.h, pobiera go z /usr/local/include
, co powoduje przerwanie kompilacji.
Teraz widzę 3 bardzo brzydkie rozwiązania problemu
W moim pliku cpp, dodać
#include </usr/include/gmp.h>
Mając absolutną zawierać ścieżka jest dość brzydki i nie-przenośny, i myślę, że ten coś powinno należeć do Makefile zamiast do źródła.dodać flagę
-nostdinc
do mojego makefile i określić ścieżki zawierają ręcznietworzyć lokalne dowiązania do bibliotek, które naprawdę chcą, a następnie wykonaj lokalny obejmuje (
#include "gmp.h"
)
Czy istnieje lepsze rozwiązanie, którego mi brakuje?
Czy wolno modyfikować gmpxx.h? –
Nie jestem, jedyne co mogę zmienić to pliki lokalne (cpp, makefile) – cobbal
# 2 ma dużo sensu. Makefile pokazuje, jak skompilować plik. Pozostałe dwa wydają się hackish. –