Header Files im Makefile verlinken



  • Guten Morgen,
    wir haben hier auf der Firma ein relativ großes Programm welches das letzte mal unter Windows 2000 mit einem Microsoft Developer Studio (so hieß das ganze laut den NMAKE Files) kompeliert wurde.
    Da aus Lizenz Gründen nun der Gcc verwendet werden soll müssen die bestehenden NMAKE Files in Makefiles umgeschrieben werden.
    An sich ist alles gut, nur habe ich gerade Probleme die Verlinkung auf eigene Header Fils hinzubekommen. Auf der Komandozeile ist das ganze ja mit dem Flag -include kein Problem, nur im Makefile habe ich keine Ahnung, wie man dem gcc sagt wo die eigenen Header liegen.
    Auch gibt es in dem NMAKE File eine art For-Schleife, die durch das ganze Verzeichnis durchgeht und alle Header Files aufnimmt. Geht so etwas im Makefile auch, oder muss man da wirklich alle (in meinem Fall währen das 20) Header als Hardcode reinschreiben?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89, C99 und C11) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • audacity363 schrieb:

    Auf der Komandozeile ist das ganze ja mit dem Flag -include kein Problem, nur im Makefile habe ich keine Ahnung, wie man dem gcc sagt wo die eigenen Header liegen.

    https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html

    audacity363 schrieb:

    Auch gibt es in dem NMAKE File eine art For-Schleife, die durch das ganze Verzeichnis durchgeht und alle Header Files aufnimmt. Geht so etwas im Makefile auch, oder muss man da wirklich alle (in meinem Fall währen das 20) Header als Hardcode reinschreiben?

    http://www.gnu.org/software/make/manual/make.html#Foreach-Function

    Wobei ich aber meine, daß das makefile möglichst universell sein sollte.
    http://www.c-plusplus.net/forum/88418-full


  • Mod

    Die kurze Antwort: Ja, das geht alles.

    Die lange Antwort: Makefiles sind eine ziemliche Wissenschaft für sich. Es gibt so viele Möglichkeiten und so viele Abkürzungen, dass man ganze Bücher darüber schreiben könnte und alle diese Möglichkeiten sind auf zig verschiedene Wege zu erreichen. Oft gibt es für kompliziert aussehende Vorgänge irgendeine elegante einzeilige Abkürzung, man muss sie nur kennen. Wenn ich meine heutigen Makefiles mit meinen früheren vergleiche, merke ich das ganz deutlich. Heute habe ich nur ganz wenige Direktiven und trotzdem läuft vollautomatisch, was ich früher noch von Hand machen musste.
    Wie du sicher verstehst, kann man Makefiles daher nicht mal eben so erklären. Was mir am meisten geholfen hat, um Makefiles zu verstehen:
    1. Tutorials und Beispiele ansehen, um einen Einstieg zu finden. Da findet man auch viele Standardaufgaben, wie Includepfade, vorgemacht. Vielleicht nicht auf die beste Art und Weise, aber immerhin sieht man dann eine Möglichkeit.
    2. "Echte" Makefiles von anderen Leuten ansehen. Gucken, wie sie funktionieren. Was machen sie gut, was machen sie schlecht, wie ginge es besser? Versuch zum Beispiel dieses Makefile, welches vieles gut macht, zu verstehen:
    http://www.c-plusplus.net/forum/88418
    3. Was mir letztlich am meisten geholfen hat: Die Anleitung lesen 🙂 . Die ist wirklich gut und vollständig (und entsprechen lang). Aber ich denke auch, dass man vorher einen gewissen Überblick braucht, um das zu verstehen, daher die ersten beiden Tipps.



  • Unter Converting Microsoft from nmake to GNU make gibt es eine Liste von "Übersetzungen".

    Aber evtl. wäre auch CMake interessant, da dieses verschiedene Generatoren unerstützt: CMake Generator Specific Information.



  • Vielen danke schon einmal an alle. Das "Ultimative Makefile" hat mir schon einmal sehr weitergeholfen.


Anmelden zum Antworten