Problem mit make: Makro definieren



  • Hallo,
    ich schreibe gerade an einem Programm für Linux und Windows.
    Damit ich die betriebssystemspeziefischen Teile alle in einem Projekt behandeln kann, habe ich einfach den Code so aufgeteilt:

    #if defined(_WIN32)
    //Teil für Windows
    #elif defined(_LINUX_)
    //Teil für Linux
    #endif

    Unter Windows klappt das auch ganz gut mit Dev-C, aber unter Linux habe ich ein Problem mit dem Makefile:
    Wenn ich es per Hand mache, also
    g++ -D _LINUX_ -c main.cpp -o main.o
    funktionierts einwandfrei ohne Fehler
    Schreib ich dann aber mein Makefile

    BIN = netpipe
    OBJ = main.o netpipe.o
    
    $(BIN): $(OBJ)
    	$(CXX) $(OBJ) -o $(BIN) $(LIBS) $(CXXFLAGS)
    
    main.o: main.cpp
    	$(CXX) -D _LINUX_ -c main.cpp -o main.o $(CXXFLAGS)
    
    netpipe.o: netpipe.cpp
    	$(CXX) -D _LINUX_ -c netpipe.cpp -o netpipe.o $(CXXFLAGS)
    

    dann definiert er mein Makro nicht und führt nur
    g++ -c main.cpp -o main.o
    aus 😡
    Was tun?
    Mfg S.W.



  • der genaue Grund fällt mir jetzt nicht sofort auf. Aber schreib doch einfach CXXFLAGS = -D _LINUX_

    Ansonsten schau dir einfach mal die Ultimative Makefile aus der rudpf FAQ an.



  • Ok Fehler gefunden:
    Mein Makefile habe ich aus Versehen unter dem Namen "make" gespeichert.
    Irgendwie hat er trotzdem den make Befehl ausgeführt, aber wohl alles falsch interpretiert.
    "make" nach "makefile" umbenannt und es ging 😃


Anmelden zum Antworten