Konsolenbefehl in Makefile einpflegen



  • Hallo,

    ich habe zwei unterschiedliche Projekte:

    1. Projekt: Hier nutze ich can4linux und mysql mit folgendem Makefile (TARGET=LINUX_X86): http://db.vivus.org/Makefile

    2. Projekt: Hier nutze ich MQTT und kompiliere über die Konsole mit folgendem Befehl aus dem Ordner, wo die stdoutsub.c Datei sowie die Dateien des 1. Projekts liegen:

    gcc stdoutsub.c -I src -I src/linux -I MQTTPacket/src MQTTClient.c src/linux/MQTTLinux.c MQTTPacket/src/MQTTFormat.c MQTTPacket/src/MQTTPacket.c MQTTPacket/src/MQTTDeserializePublish.c MQTTPacket/src/MQTTConnectClient.c MQTTPacket/src/MQTTSubscribeClient.c MQTTPacket/src/MQTTSerializePublish.c -o stdoutsub MQTTPacket/src/MQTTConnectServer.c MQTTPacket/src MQTTSubscribeServer.c MQTTPacket/src/MQTTUnsubscribeServer.c MQTTPacket/src/MQTTUnsubscribeClient.c
    

    Nun würde ich gerne im 1. Projekt auch MQTT nutzen. Sprich ich müsste den Konsolenbefehl ins Makefile einbinden - nur weiß ich leider nicht wie.

    Wo ich angebe, welches File (stdoutsub.c) er kompilieren soll ist klar.
    Auch wo die -I Paramter hinkommen. Sprich -I src -I src/linux -I MQTTPacket/src aber wo muss der Rest hin? (also die Pfade mit Datei dh:

    MQTTClient.c src/linux/MQTTLinux.c MQTTPacket/src/MQTTFormat.c 
    MQTTPacket/src/MQTTPacket.c MQTTPacket/src/MQTTDeserializePublish.c 
    MQTTPacket/src/MQTTConnectClient.c MQTTPacket/src/MQTTSubscribeClient.c 
    MQTTPacket/src/MQTTSerializePublish.c
    

    ) Laut dem Manual von GCC darf
    hinter -I nur ein Ornder...

    Und dann noch der hintere Teil, welchen ich überhaupt nicht unter bekomme:

    -o stdoutsub MQTTPacket/src/MQTTConnectServer.c 
    MQTTPacket/src/MQTTSubscribeServer.c 
    MQTTPacket/src/MQTTUnsubscribeServer.c 
    MQTTPacket/src/MQTTUnsubscribeClient.c
    

    Wo genau müssen Pfade zu C-Files in dieses Makefile?

    Unter folgenem Link http://db.vivus.org/Makefile2 habe ich versucht den Konsolenbefehl ins Makefile zu verarbeiten. Bekomme aber leider nicht alles unter. Würde mich freuen, wenn mir jemand beim zusammenführen des Makefiles und dem Konsolenbefehl behilflich sein könnte.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) 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.


  • Mod

    Eine viel bessere Idee wäre, ein separates Makefile für MQTT zu machen, welches das Projekt zu einer Bibliothek baut. Das Makefile für das Gesamtprojekt prüft auf das Vorhandensein der Bibliothek und ruft nötigenfalls das Untermakefile auf. Reicht dir das als Hinweis oder brauchst du konkretere Anweisungen? Noch der obligatorische Hinweis auf diesen Thread aus den FAQ:
    https://www.c-plusplus.net/forum/88418

    Ich möchte auch dringend davon abraten, eine Monstercompilierungszeile, wie deine, unverändert ins Makefile aufzunehmen. Der Sinn von make ist schließlich gerade, dass man das Bauen eines Projekts aus einzelnen Dateien automatisiert, so dass man nicht immer unbedingt jede Datei übersetzen muss, um das Gesamtprojekt zu bauen. Die Monstercompilierungszeile würde gerade das Gegenteil erreichen.


Log in to reply