Skip to content

biren9/C-Food

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ausführen

set stack limit: ulimit -s BYTE

:> make -f makefile

:> Parser/debug/ParserTest TestFile/Parser/fib.txt ../a 2> ../error.log

Das Projekt

Das Projekt wurde in 4 Teilprojekte aufgeteilt:

- Automat
- Buffer
- Symboltabelle

- Scanner

Jedes Teilprojekt hat die Verzeichnisstruktur:

- src			enthaelt den Source-Code
- includes		enthaelt die Headerfiles
- objs			enthaelt die Objektfiles, die notwenig fuer das Gesamtprojekt sind
- debug			enthaelt die Objektfiles und das ausfuehrbare File zum Testen  des Teilprojekts

Jedes Teilprojekt enthaelt ein eigenes Makefile und eine eigene Main-Klasse, um die Funktionalitaet zu testen.

Makefiles werden benoetigt, um das Compilieren und Linken automatisiert durch das Tool make ausfuehren zu lassen.

Level: ohne Makefile Kenntnisse Im Makefile im Teilprojekt Automat sind alle Schritte zum Compilieren und Linken ausfuehrlich aufgelistet.

Level: wenig Makefile-Kenntnisse Im Makefile im Teilprojekt Buffer werden die benoetigten Verzeichnisse ueber Variablen definiert.

Level: gute Makefile-Kenntnisse Im Makefile im Teilprojekt Symboltable und Scanner wird auch die Liste der zu compilierenden Files ueber Variablen deklariert.

Aufbau des Makefiles: Definition der Variablen Targets zum Bauen des Tests, Targets sind Sprungziele, die durch make ausgefuehrt werden können

Im Terminalfenster können die targets so aufgerufen werden: make target

In der Eclipse View "Make Targets" erscheinen die Targets der einzelnen Makefiles, die dann mit einem Doppelklick ausgefuehrt werden können.

Aufbau der Targets

- target: dependencies
- [tab] system_command

Compilation commands:

classA.o: classA.cpp classA.h [tab] g++ -c -g classA.cpp -o classA.o

- target classA.o ist abhaengig von der Source Datei classA.cpp und classA.h
- g++ Compiler Aufruf
- das File classA.cpp wird nur compiliert (-c) und in das Outputfile (-o) classA.o geschrieben

classB.o: classB.cpp classB.h classA.h [tab] g++ -c -g classB.cpp -o classB.o

- target classB.o ist abhaengig von der Source Datei classB.cpp, classB.h und classA.h
- g++ Compiler 
- das File classB.cpp wird nur compiliert (-c) und in das Outputfile (-o) classB.o geschrieben    

Link command:

- my_program: classA.o classB.o
- g++ -g classA.o classB.o -o my_program

- target my_program ist abhaengig von den Objektdateien classA.o und classB.o
- g++ Linker 

options: -c Kompilieren ohne zu linken. -g debugging infos erzeugen -o file object-file name

http://www.gnu.org/software/make/

http://mrbook.org/blog/tutorials/make/

http://de.wikipedia.org/wiki/Make

http://www.sethi.org/classes/cet375/lab_notes/lab_04_makefile_and_compilation.html

MAKEFILE for CLION

https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/