C++ Include Searchpath funktioniert bei Headerfiles nicht



  • Moin,

    ich programmiere derzeit in C++ ein QNX Projekt. Dort würde ich ungern die Include Pfade Relativ zu jeder Headerfile nutzen.

    Beispiel:

    src/foo/bar.hpp
    src/util/debug.hpp

    Wenn ich nun in bar.hpp #include "debug.hpp" mache, dann schmeißt der Compiler mir dies um die Ohren. Dabei habe ich in der Makefile folgende Änderung gemacht:
    INCLUDES+= -Isrc/util

    Der Kompilierungsteil sieht so aus:

    #Compiling rule
    $(OUTPUT_DIR)/%.o: %.c
    	@mkdir -p $(dir $@)
    	$(CC) -c $(DEPS) -o $@ $(INCLUDES) $(CCFLAGS_all) $(CCFLAGS) $<
    $(OUTPUT_DIR)/%.o: %.cpp
    	@mkdir -p $(dir $@)
    	$(CXX) -c $(DEPS) -o $@ $(INCLUDES) $(CCFLAGS_all) $(CCFLAGS) $<
    
    #Linking rule
    $(TARGET):$(OBJS)
    	$(LD) -o $(TARGET) $(LDFLAGS_all) $(LDFLAGS) $(OBJS) $(LIBS_all) $(LIBS) $(INCLUDES)
    
    #Rules section for default compilation and linking
    all: $(TARGET)
    

    In den Source Dateien funktioniert dies Perfekt, aber sobald ich das selbige in Headerfiles machen möchte versagt es leider.
    Muss ich noch was machen oder ist der Case nicht möglich (sollte ja eigentlich)?


  • Mod

    Da fehlt irgendeine wichtige Information. Denn an sich ist ein Include eine simple Textersetzung, und es gibt für den Präprozessor keinen Unterschied zwischen Headern und Sourcen; für den ist alles nur Text. Das heißt, irgendwo machst du doch etwas anders zwischen dem was funktioniert und dem, was nicht funktioniert.

    Oder es ist ein anderer dummer Fehler, wie zum Beispiel ein zirkulärer Include, denn du hast uns ja nicht gesagt, was genau überhaupt der Fehler ist.

    Zeig uns mal ein ganz minimales Beispiel, das den Fehler demonstriert. Für Includes kannst du den sonstigen Code ja komplett weglassen. Also zeig uns nur die Kombination von Dateien und Includes, die nicht funktioniert, und die genaue Fehlermeldung.



  • Hab am Mittwoch ein massives Refactoring angestoßen, scheinbar hat es sich dadurch selbst gelöst. Zwar geht das Autocomplete noch nicht in Headerfiles, aber das könnte auch an Momentics liegen, leider hab ichs damals nicht geschafft CLion oder VSCode QNX beizubringen.

    Könnte ggf. daran gelegen haben, dass ich 2 Headerfiles mit nur C inline Methoden hatte, die hatte ich nun in Klassen Refaktoriert


Anmelden zum Antworten