1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Makefile erstellen

Discussion in 'Programmieren' started by TheMars, May 27, 2009.

Thread Status:
Not open for further replies.
  1. daboom

    daboom Megabyte

    Tja, keine Errors zu erkennen. Weiß ich auch nicht, wo das herkommt.

    Schonmal dran gedacht, eclipse CDT + MinGW zu benutzen? Oder bist Du in DevC++ schon so tief drin?
     
  2. TheMars

    TheMars Byte

    In Anbetracht dessen, das Dev-C++ schon seit längerem nicht mehr weiterentwickelt wird, denke ich jetzt einen Grund gefunden zu haben um umzusteigen.

    Kannst du etwas näher erläutern, was MinGW genau macht - ist mir bei meinen Recherchen zum Makefile-Problem ein paar mal über den Weg gelaufen.
     
  3. daboom

    daboom Megabyte

    MinGW ist im Prinzip die GNU Compiler Collection für Windows. Unter anderem halt auch C++, C und Java aber auch Ada usw.

    Da eclipse mit dem CDT keinen Compiler an sich zur Verfügung stellt, sonder im Prinzip nur eine IDE zur Verwaltung und Benutzung eines Compilers, braucht man halt noch nen Compiler.

    DevC++ nutzt übrigens auch MinGW. Wenn man im Programmordner von DevC++ n bischen rumguckt sieht man das.

    Am besten also, wenn Du wirklich umsteigen willst (was ich sehr empfehle ;)):

    1. MinGW runterladen und installieren (Du brauchst dann erstmal nur C/C++)
    2. eclipse Ganymede am besten gleich komplett als CDT Version runterladen und irgendwohin entpacken

    Da es immer ein bischen schwierig ist, auf der eclipse Seite das zu finden, was man so sucht, hier der Link: ;)

    http://www.eclipse.org/downloads/do...nymede/SR2/eclipse-cpp-ganymede-SR2-win32.zip
     
  4. TheMars

    TheMars Byte

    Okay, ich habe es jetzt geschafft das ganze in Eclipse einmal umzusetzen.

    Ich habe Eclipse heruntergeladen und MinGW installiert

    Kann mich nicht daran errinern, das ich Eclipse irgendwie beibringen musste, das MinGW jetzt auf einmal da ist - woher weiß es das?

    Dann habe ich ein neues C++Makefile-"Hallo Welt"-Projekt erstellt und den Code aus dem selbsterstellten Makefile einfach an das vorhandene Makefile herankopiert (ohne clean) und die Pfade so lange angepasst, bis es keine Fehler mehr gab.

    Es bleiben keine Fehler mehr übrig, das Programm lässt sich starten :jump:

    Jetzt includiere ich
    #include "F:\ODE\include\ode\ode.h"
    #include "F:\ODE\include\drawstuff\drawstuff.h"​
    und erhalte daraufhin einige Linker Fehler, die ich bei Dev-C++ durch angeben eines Include-Verzeichnisses beheben konnte. Bei Eclipse kenne ich mich jedoch noch ganz und garnicht aus und so wirklich eine Beschreibung zum Angeben eines zusätzlichen include-Verzeichnisses finde ich auf die Schnelle nicht.

     
    Last edited: Jun 1, 2009
  5. daboom

    daboom Megabyte

    Ich denke, Du solltest Dir grundsätzlich zwei Projekte anlegen.

    1. Das ODE Library Projekt
    - enthält quasi den kompletten ode Ordner (so wie wir das in DevC++ bis jetzt auch gemacht haben ;))
    - sollte dann unter eclipse als C++ Makefile Projekt erstellt werden
    - hier ist es dann so, dass eclipse im Standardfall ein Makefile im Projektordner erwartet, welches dann ausgeführt wird (also genauso, wie wir es bis jetzt auch hatten)

    Dieses Projekt baut die dann die statische Library von ODE

    2. Deine Anwednung, die die ODE library benutzt
    - Kannst Du dann als ganz normales MinGW Projekt anlegen (möglichst im gleichen workspace wie das library Projekt)
    - Dann die includes des library Projektes in den Projekteinstellungen angegeben
    -> Rechtsklick auf das Projekt -> Properties -> C/C++ General -> Paths and Symbols -> Includes -> Add... (Dort am besten immer gleich "for all languages" und "for all configurations" auswählen, da man die includes eigentlich überall braucht)
    - Und die statische library angeben
    -> Rechtsklick auf das Projekt -> Properties ->C/C++ Build -> Settings -> MinGW C++ Linker
    Dort bei "libraries" die library Datei angeben (ohne Pfad, also der reine Dateiname, aber ich glaube, Du muss das "lib" am Anfang weglassen) und bei "Library search path" den Pfad zu dieser library (also im Standardfall bei Dir "C:\ODE01\lib\DebugSingleDLL")

    Das ODE Makefile erstellt auch eine DLL (also eine dynamische Bibliothek), mit der würde es theoretisch auch gehen. Mit der statischen halte ich es aber für einfacher ;)
     
  6. TheMars

    TheMars Byte

    Fast am Ziel :)

    Die Library hat er jetzt gebaut mit folgendem Makefile:

    Code:
    all:
    	@echo "Executing premake..."
    	"F:/Eclipse C++/ODEStatLib/build/premake4" --file="F:/Eclipse C++/ODEStatLib/build/premake4.lua" --cc=gcc gmake --os=windows gmake
    	@echo "Executing make"
    	"C:/MinGW/bin/mingw32-make.exe" -C "F:/Eclipse C++/ODEStatLib/build/gmake" CC=g++
    Beim einbinden der Includes allerdings, mit
    #include "F:/Eclipse C++/ODEStatLib/include/ode/ode.h"
    #include "F:/Eclipse C++/ODEStatLib/include/drawstuff/drawstuff.h"​
    trotz dem ich es exakt so mache, wie du beschrieben hast

    bekomme ich dutzende Fehler der Sorte:

    Irgendwie bekomme ich anscheinend das mit dem Linken nicht ganz so richtig hin.

    Ich mache
    Rechtsklick Projekt>Properties>C/C++ General>Paths and Symbols>Includes>Add>Filesystem>
    "F:\ODE\include">Add to all configurations>Add to all languages>OK>OK​

    mir ist desweiteren aufgefallen, dass es
    so in der Art nicht gibt - dieser Punkt sollte allerdings derselbe sein, den ich hier unter
    C/C++ General>Paths and Symbols>Librarys>Add
    C/C++ General>Paths and Symbols>Library Paths>Add​
    finde, allerdings teile ich Eclipse nichts über den MinGW C++ Linker mit.

    PS: Ich habe das ganze analog dazu unter Dev-C++ getestet,
    dort wurden alle Fehlermeldungen, die etwas mit ODE und dessen implemetierung zu tun haben eliminiert. Ledigdlich ein (nach Recherche) typischer Bug verhindert die Ausführung des Beispielcodes.
    Dev-C++ hat halt so seine Tücken :rolleyes:
     
  7. daboom

    daboom Megabyte

    Wenn Du den include Pfad in den Projekteinstellungen angegeben hast, brauchst bzw. solltest Du in den #include Direktiven im Code nicht mehr die aktuellen Pfade benutzen, sondern nur noch alles relativ zu dem von Dir angegebenen Pfad, also in diesem Fall:

    #include "ode/ode.h"
    #include "drawstuff/drawstuff.h"

    Stell Dir vor, Du willst das Projekt mal auf nem anderen Rechner weiterbearbeiten, wo der ODE Krams unter "D:\Irgendwas" liegt. Dann kannst Du den ganzen Quellcode durchforsten, um die ganzen includes anzupassen ;)


    Welche Art Projekt hast Du denn angelegt, bzw. welche hast Du überhaupt zur Verfügung?

    Wenn Du ein neues C++ Projekt anlegst, solltest Du rechts unter "Toolchains" eigentlich "MinGW GCC" drin haben. Ich meine hier das Projekt, welches die statische Library benutzen soll, nicht das, welches sie kompiliert.
     
  8. TheMars

    TheMars Byte

    Verdammt nochmal, es will einfach nicht. Im Project-Explorer werden die Includes einwandfrei angezeigt aber er findet sie nicht im Quellcode. Ich habe einen Screen gemacht:

    Achtung, Fehlerbild :rolleyes:

    [​IMG]
     

    Attached Files:

  9. daboom

    daboom Megabyte

    Also ich hab's eben kurz durchgespielt und es funzt perfekt soweit.

    Ich hänge mal die beiden Projekte als zip an. Einfach in Deinen workspace entpacken und dann über "Import->Existing Projects into workspace" importieren. In wieweit das mit den Pfaden zur MinGW Installation noch geht, weiß ich allerdings nicht. Aber da wird er Dich dann schon vollschreien ;)

    Den ODE Kram musste ich natürlich rausnehmen, weil sonst das zip zu groß geworden wäre. Also einfach den ganzen ODE Kram in das ODEStatLib Projektverzeichnis rein (das Makefile liegt schon drin).

    Dann kompilierst Du zuerst die das ODEStatLib Projekt, in eclipse sollte er Dir schon ein Make Target names "All" anbieten, das hatte ich angelegt.

    Diese operation mit dem Vector in der main hatte ich bloß eingefügt, um zu sehen, ob auch brav ein Linker Fehler kommt, wenn ich die Library nicht angebe. Und wie es sich gehört, ist der dann auch gekommen ;)
    Dann die Library angegeben, wie beschrieben und schon war alles schön ;)

    Wie gesagt, versuch erstmal die Projekte zu importieren und guck mal, was er zu den Pfaden sagt. Die nachträglich hinzubiegen, sollte nicht so schwer sein.

    Edit: Ich häng nochmal nen Screenshot an, nur damit Du es auch siehst ;)
     

    Attached Files:

    Last edited: Jun 4, 2009
Thread Status:
Not open for further replies.

Share This Page