Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?



  • Hallo, wie kann ich denn in C mit der IDE Codeblocks Beispielprojekte öffnen? Ich habe mal github durchsucht und möchte gerne einige Projekte selbst studieren. Dabei fällt mir oft auf dass wenn ich ein Projekt in Codeblocks öffne funktionieren diese oft nicht. Wahrscheinlich mache ich da etwas falsch. Als Beispiel dieses Projekt eines Taschenrechners:

    https://github.com/btmills/calculator

    Ich habe das Projekt heruntergeladen und einfach mit Codeblocks geöffnet, also die Datei "calculator.c". Wenn ich auf kompilieren drücke kommen aber viele Fehlermeldungen. Daher meine Frage, wie öffne ich das Projekt korrekt in Codeblocks damit ich es kompilieren kann. Danke



  • Hmm... das Makefile sieht nicht sonderlich kompliziert aus.
    Was Du versuchen kannst, ist einfach die *.c- und *.h-Dateien in ein neues Projekt zu kopieren.
    Also einfach neues Projekt erstellen und dann die Quellcodedateien reinkopieren.
    Ich hoffe, Du hast es so eingerichtet, dass Du MinGW (das ist der C-Codeuebersetzer, wenn Du magst) etc. mitinstalliert hast.

    Die "lm"-Option im Makefile könnte das auch verursachen beim Übersetzen. Und Du solltest die anderen *.c-Dateien alle auch mal kopieren, evtl.



  • Ok habe das gemacht, nun kommt nur noch dieser Fehler: undefined reference to `WinMain'|



  • @jasmin89 Du musst als Projekt-Typ das für Konsolenprogramme (passen zu deinem Betriebssystem und Prozessor) nehmen.



  • Ich habe bereits ein Konsolenprogramm ausgewählt. Ist es eigentlich egal wenn das Projekt keine .cbp Datei enthält? Denn ich habe in Codeblocks immer eine .cbp Datei gehabt. Bei meinen kleinen selbst progammierten Dateien muss ich nur auf die .cbp Datei klicken und dann öffnet sich mein Projekt und kann anschließend einfach die main kompilieren.

    Evtl. mache ich später noch ein Video wie ich genau das github projekt öffne, villeicht erkennt man da besser den Fehler den ich mache.



  • @jasmin89 .cbp hört sich nach Code Blocks Project an.

    Da werden die Projecteinstellungen drin gespeichert sein.
    Das ist also eine Eigenheit von Code::Blocks.

    Bei einem Konsolenprogramm ist der Einstiegspunkt für den Startup-Code die main()-Funktion.

    Dein Startup-Code sucht aber WinMain und den gibt es nicht bei taschenrechner.c



  • Ok. Mir ist gerade aufgefallen dass im Projekt folgendes erwähnt wird:

    Building and Running
    Build with make. Clean with make clean. Run with ./calc

    Was bedeutet das build with make? Muss ich dazu noch etwas zusätzliches installieren



  • Dafür ist das makefile da, welches vom make-Tool aufgerufen wird. Dies ist aber alles konsolenbasiert, nicht für eine IDE direkt gedacht.

    Es gibt aber wohl eine Möglichkeit: Code::Blocks and Makefiles (ich habe mir das aber nicht im Detail durchgelesen).

    Für so ein kleines Projekt brauchst du aber einfach nur die benötigten C-Dateien calculator.c und stack.c (s. obiges makefile) zu deinem Codeblocks-Projekt hinzufügen (und evtl. noch -lm zu den Linkeroptionen hinzufügen, falls du noch Linkerfehler wegen fehlenden mathematischen Funktionen erhältst).



  • Ich habe ein neues Konsolenprogramm in Codeblocks erstellt. Habe die main.c und .cbp gelöscht und die drei Dateien calculator.c stack.c und das makefile hineinkopiert. Und dann komme ich nicht mehr weiter. Muss ich dann nur das makefile öffnen? Falls ja wie stelle ich das an?

    Wenn ich die makefile Datei öffne bekomme ich von Codeblocks eine Meldung:

    Codeblocks does not yet know how to open this kind of file. Please select what you want to do with it:
    -Select an external program to open it
    -Open it with the assosciated application
    -Open it inside the codeblocks editor

    Da weiß ich nicht wie es nun weiter geht.



  • @jasmin89
    Du brauchst (lt. makefile) die Dateien calculator.c, stack.c und stack.h in Deinem Projekt.
    Das makefile gehört da nicht hinein, es ist dafür da, das Programm in der Konsole zu bauen.



  • Also ich finde das ist gar nicht so einfach den Code zum laufen zu bringen 😟 Ich lerne C programmieren mit dem Buch Programmieren für Dummies und da habe ich keine Probleme meinen Code zum laufen zu bringen.

    Wenn ich das richtig verstehe muss ich dann einfach die Kommandozeile starten und mit cd in dem entsprechenden Ordner navigieren. Sobald ich das gemacht habe, habe ich genau das makefile kopiert und in die Kommandozeile eingegeben. Da kommen mehrere Meldungen wie: Der Befehl "stack_test:" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden. Ich wäre einfach froh wenn ich das Programm einfach zum laufen bringe.

    Update: Ich habe es zum laufen gebracht. Damit das ganze Ding kompiliert wird muss ich mingw32-make eingeben. Nun bin ich echt froh dass es funkioniert 😄 .
    So nun meine letzte Frage: Ist es üblich dass Softwareprojekte mit so einem makefile kompiliert werden? Wird das bei größeren Projekten so gehandhabt? Denn jetzt habe ich das erste mal davon gehört.

    Achja und was komisch war ist dass ich mit Codeblocks den gcc compiler auf meinen pc installiert hatte. Aber wenn ich in cmd.exe gcc eingab konnte er diesen nicht finden. Ich musste die noch manuell in der Umgebungsvariable Erweiterte Einstellungen den Ordner mingw hinzufügen. Ist das normal oder habe ich da vill. bei der Installation von gcc etwas falsch gemacht



  • @jasmin89 sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    Update: Ich habe es zum laufen gebracht. Damit das ganze Ding kompiliert wird muss ich mingw32-make eingeben. Nun bin ich echt froh dass es funkioniert 😄 .
    So nun meine letzte Frage: Ist es üblich dass Softwareprojekte mit so einem makefile kompiliert werden? Wird das bei größeren Projekten so gehandhabt? Denn jetzt habe ich das erste mal davon gehört.

    Ja, ist eine von mehreren möglichen Varianten und zumindest bei nicht-Windows-Projekten üblich. Siehe https://de.wikipedia.org/wiki/Make (man kann sich das Makefile auch von https://de.wikipedia.org/wiki/CMake generieren kann, wobei man dann CMake lernen muss). Viele Editoren können auch die (C)Make-Dateien einlesen und daraus ein Projekt machen.

    In Visual Studio nennt sich die Alternative (soweit ich weiß) "Visual Studio-Projektmappe" (Solution) - dann wird dort gespeichert, wie kompiliert werden muss.

    Wenn du nur so ein simples Projekt hast, könntest du auch alles zusammen mit gcc -O2 -Wall -Wextra calculator.c stack.c kompilieren. Aber die Idee ist, dass du die Dateien, gerade in größeren Projekten, einzeln kompilieren kannst, damit du bei Änderungen nur immer die geänderten Teile neu übersetzen musst. Und am Ende werden die einzelnen Ausgaben dann zusammengelinkt (siehe Linker). Wegen der Header-Dateien ist es allerdings kein leichtes Unterfangen zu entscheiden, welche Dateien denn neu übersetzt werden müssen, wenn du einen Header änderst.



  • @jasmin89 sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    So nun meine letzte Frage: Ist es üblich dass Softwareprojekte mit so einem makefile kompiliert werden? Wird das bei größeren Projekten so gehandhabt? Denn jetzt habe ich das erste mal davon gehört.

    C ist für und auf UNIX entstanden (1973 wurde UNIX 4 in C reimplementiert veröffentlicht, vorher war auch UNIX in Assembler geschrieben), so dass etliche Werkzeuge, die in der Literatur beschrieben werden klassische UNIX Tools sind. Das trifft auch auf gcc zu. Ursprünglich stand das einmal für GNU C Compiler, weil der klassische UNIX C Compiler einfach nur als cc bezeichnet wurde, und so auch in der Shell aufgerufen wird. Seit langer Zeit umfasst der gcc nicht mehr nur einen C Compiler sondern etliche andere Compiler, so dass man das GCC zu GNU Compiler Collection umgedeutet hat. make ist ein klassische UNIX Shell Programm, um größere Projekte automatisiert auf der Shell zu bauen. Das macht man auch noch heute, da make den Vorteil hat, dass man das auch Remote machen kann, und sehr wenig Resourcen auf den entfernten Server verbraucht, oder man es in einem Job durchführen kann. D.h. man muss nicht am Rechner sitzen, während der Compilejob durchläuft.

    Achja und was komisch war ist dass ich mit Codeblocks den gcc compiler auf meinen pc installiert hatte. Aber wenn ich in cmd.exe gcc eingab konnte er diesen nicht finden. Ich musste die noch manuell in der Umgebungsvariable Erweiterte Einstellungen den Ordner mingw hinzufügen. Ist das normal oder habe ich da vill. bei der Installation von gcc etwas falsch gemacht

    Du nutzt Windows und da funktioniert mingw nicht out-of-the-box wie gcc im einem UNIX/Linux.



  • @wob sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    Viele Editoren können auch die (C)Make-Dateien einlesen und daraus ein Projekt machen.

    Das ist eine schlechte Lösung, da die meisten Editoren/IDEs direkt Makefiles unterstützen.



  • @john-0 sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    @wob sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    Viele Editoren können auch die (C)Make-Dateien einlesen und daraus ein Projekt machen.

    Das ist eine schlechte Lösung, da die meisten Editoren/IDEs direkt Makefiles unterstützen.

    Entweder missverstehe ich dich oder du mich. In Projektdateien sind ja in der Regel auch geöffnete Dateien etc. gespeichert. Das will man nicht in einem Makefile haben (wie soll das auch gehen, jeder hat doch andere Dateien offen, das will man auf keinen Fall einchecken). Daher braucht man schon ein Projekt im Editor. Dieses Projekt referenziert dann intern natürlich das Makefile oder die CMakeLists.txt.



  • @wob sagte in Wie kann ich denn in C mit Codeblocks Beispielprojekte öffnen?:

    Entweder missverstehe ich dich oder du mich. In Projektdateien sind ja in der Regel auch geöffnete Dateien etc. gespeichert. Das will man nicht in einem Makefile haben (wie soll das auch gehen, jeder hat doch andere Dateien offen, das will man auf keinen Fall einchecken). Daher braucht man schon ein Projekt im Editor. Dieses Projekt referenziert dann intern natürlich das Makefile oder die CMakeLists.txt.

    Es gibt IDEs die importieren Makefiles und generieren daraus eine IDE spezifische Projektdatei, und nutzen danach das Makefile nicht mehr. Andere IDEs nutzen das Makefile direkt, und tracken in ihrem eigenem Format was für Dateien geöffnet sind etc. Ggf. muss man da in der IDE angeben was er beim make konkret aufrufen soll (all, …), aber das Makefile wird eben nicht zu einem proprietären Format verwurstet.



  • Danke für die Antworten. Ich bin nun etwas schlauer als vorher.


Anmelden zum Antworten