Präprozessorkonstanten im makefile definieren und im sourcecode verwenden

Dieses Thema im Forum "C/C++" wurde erstellt von supersucker, 19.12.2006.

  1. #1 supersucker, 19.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Hallo zusammen,

    gibt es eine Möglickeit im Makefile Präprozessorkonstanten zu definieren und im Source-Code selbst gültig zu machen?

    Eine bessere Formulierung fällt mir gerade nicht ein, deshalb mal ein Beispiel:

    Im Makefile:

    Code:
    # os-version abfragen
    OS_VERSION=...
    # 
    ifeq (Windows,OS_Version)
    WINBUILD_VC=1
    CFLAGS+=$(DEBUG) -O2 -Wno-sign-compare -Wimplicit  [B][COLOR="Red"]-WINBUILD_VC[/COLOR][/B] -DWINBUILD -D_GNU_SOURCE 
    endif
    
    Dies soll im source-code folgendermaßen genutzt werden:

    Code:
    // if we are on linux, include poll.h and socket.h
    #ifndef WINBUILD_VC
    
    #include <sys/poll.h>
    #include <sys/socket.h>
    #endif
    Ich habs schon probiert, so wie ich gepostet habe funktioniert das nicht, deshalb die Frage:

    Funktioniert das prinzipiell nicht oder hab ich was nicht beachtet?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Lord Kefir, 19.12.2006
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    944
    Zustimmungen:
    0
    Da Du anscheinend nur das Betriebssystem in Erfahrung bringen möchtst, kannst Du auch einfach prüfen, auf welchem OS Dein Programm kompiliert wird:

    Code:
    #ifdef WIN32
    blablabla
    #endif
    
    Mfg, Lord Kefir
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
     
  5. #4 supersucker, 19.12.2006
    Zuletzt bearbeitet: 19.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Nein, das ist leider nicht alles.......

    Also jetzt erzähle ich mal die ganze Geschichte:

    - Ich hab einen Riesenhaufen an C-Sourcecode der extern gecodet wurde.
    - Die ganze Applikation soll nun inhouse weiterentwickelt werden.
    - Die bisherigen Entwickler haben mir zugesichert, das der source-code mit dem mitgelieferten makefile sowohl unter Linux als auch unter Windows kompilierbar sei.

    Das stimmt aber so nicht:

    - Er kompiliert unter Linux
    - und unter Windows, aber NUR im Visual Studio von MS, welches - hach, was für ein Zufall - die Entwicklungsumgebung der Entwickler war.

    Der Grund warum es ausserhalb des VS nicht kompiliert:

    Im Sourcecode wird ständig mit

    Code:
    #ifndef WINBUILD_VC
    
    #include <sys/poll.h>
    #include <sys/socket.h>
    #endif
    abgefragt ob wir auf einem Win- oder einem Linux-System sind.

    Dieses WINBUILD_VC wird aber nirgends gesetzt, demzufolge gibts haufenweise Compile-Fehler weil er dann immer in diesen Zweig springt und versucht z.b. die socket.h zu laden, die ist aber für Linux, und wird demzufolge nicht gefunden.

    Der Grund warum es unter Visual Studio kompilierbar ist:

    Weil in der Projektdatei von Visual Studio genau dieses WINBUILD_VC gesetzt ist! (Bitte keine Bemerkung wegen der Unverschämtheit etwas auszuliefern was unter Windows nur in einer bestimmten IDE ablauffähig ist)

    So,

    nun soll dieses Ding natürlich ohne VS unter Windows kompilierbar sein, deshalb dachte ich mir das es am einfachsten und unkompliziertesten sein müsste im Makefile - nämlich genau in der Sektion in der das OS festgestellt wird - diese Konstante setze...

    Deshalb die Frage:

    Geht das überhaupt? Wenn ja, wie?

    EDIT:

    Hab gerade erst deinen Post gesehen, vielen Dank Rikola!
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Präprozessorkonstanten im makefile definieren und im sourcecode verwenden

Die Seite wird geladen...

Präprozessorkonstanten im makefile definieren und im sourcecode verwenden - Ähnliche Themen

  1. mit makefile bilder convertieren (ImageMagick)

    mit makefile bilder convertieren (ImageMagick): Hi, ich würde gern mit einer Makefile alle Bilder in ein bestimmtes format konvertieren. Zum konvertieren möchte ich ImageMagick benutzen. Das...
  2. Makefile rekursiv aufrufen

    Makefile rekursiv aufrufen: HAT SICH ERLEDIGT!! WAR EIN BISSEL DUSSELIG ;) Hi, mal eine Frage zu einem Makefile. Ich weiß nicht wie man in einer Regel eine Variable setzt,...
  3. Makefile Problem für Diplomarbeit

    Makefile Problem für Diplomarbeit: Hallo, ich schreibe gerade meine Diplomarbeit und soll dort eine Schnittstelle für eine IR-Kamera zur Anbindung an eine LabView...
  4. Cygwin nur für g++ und Makefiles

    Cygwin nur für g++ und Makefiles: Hallo. Weis irgend jemand welche pakete man genau praucht, um den cygwin nur für den g++ compiler und die makefiles zu verwenden? Danke
  5. Cygwin & makefile => Hilfe

    Cygwin & makefile => Hilfe: Hallo ! Ich suche verzweifelt nach Info´s wie ich mit Cygwin einen makefile erstellen kann. Kann mir jemand kurz eine Einweisung geben? Ich bin...