<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[makefile pathvariablen richtig]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe ein kleines Projekt mit einem Freund am laufen und hatte mir überlegt das wir getrennte Ordner für unsere Quelldatein machen (um updates besser einfügen zu können), einmal einen Ordner für ihn &quot;SeinPart&quot; und einemal einen Order für mich &quot;MeinPart&quot; und das wir im Ordner in dem die beiden files drinn sind einfach nur eine makefile bruachen die uns das ganze dann in eine executable übersetzen lässt.<br />
Nun habe ich aber das problem mit den Pathvariablen, ich habe im internet n kurzbeispiel gefunden indem diese mit &quot;:=&quot; gemacht werden, nun das funktioniert bei mir nicht:</p>
<pre><code>Tim.files := TimPart\
Tim.obj = $(Tim.files)Stein.o $(Tim.files)Ebene.o $(Tim.files)Pyramide.o $(Tim.files)Baumeister.o $(Tim.files)main.o

PyramidenBau : $(Tim.obj)
		g++ -Wall -o PyramidenBauAlphaV0.5 $(Tim.obj)

main.o : $(Tim.files)main.cpp $(Tim.files)Baumeister.h
	g++ -c $(Tim.files)main.cpp

Baumeister.o : $(Tim.files)Baumeister.cpp $(Tim.files)Baumeister.h $(Tim.files)Pyramide.h
	g++ -c $(Tim.files)Baumeister.cpp

Pyramide.o : $(Tim.files)Pyramide.cpp $(Tim.files)Pyramide.h $(Tim.files)Ebene.h
	g++ -c $(Tim.files)Pyramide.cpp

Ebene.o : $(Tim.files)Ebene.cpp $(Tim.files)Ebene.h $(Tim.files)Stein.h
	g++ -c $(Tim.files)Ebene.cpp

Stein.o : $(Tim.files)Stein.cpp $(Tim.files)Stein.h
	g++ -c $(Tim.files)Stein.cpp
</code></pre>
<p>Mein g++ sagt mir:<br />
g++ -Wall -o PyramidenBauAlphaV0.5<br />
g++: no input files<br />
make: *** [PyramidenBau] Fehler 1</p>
<p>ich versteh zwar WAS er meint, aber nicht wieso. Weil die Inputfiles müssten doch in der Anweisung &quot;g++ -Wall -o PyramidenBauAlphaV0.5 $(Tim.obj)&quot; mit dem $(Tim.obj) übergeben werden.</p>
<p>danke für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276956/makefile-pathvariablen-richtig</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 04:23:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276956.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Nov 2010 18:27:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to makefile pathvariablen richtig on Wed, 10 Nov 2010 18:27:14 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich habe ein kleines Projekt mit einem Freund am laufen und hatte mir überlegt das wir getrennte Ordner für unsere Quelldatein machen (um updates besser einfügen zu können), einmal einen Ordner für ihn &quot;SeinPart&quot; und einemal einen Order für mich &quot;MeinPart&quot; und das wir im Ordner in dem die beiden files drinn sind einfach nur eine makefile bruachen die uns das ganze dann in eine executable übersetzen lässt.<br />
Nun habe ich aber das problem mit den Pathvariablen, ich habe im internet n kurzbeispiel gefunden indem diese mit &quot;:=&quot; gemacht werden, nun das funktioniert bei mir nicht:</p>
<pre><code>Tim.files := TimPart\
Tim.obj = $(Tim.files)Stein.o $(Tim.files)Ebene.o $(Tim.files)Pyramide.o $(Tim.files)Baumeister.o $(Tim.files)main.o

PyramidenBau : $(Tim.obj)
		g++ -Wall -o PyramidenBauAlphaV0.5 $(Tim.obj)

main.o : $(Tim.files)main.cpp $(Tim.files)Baumeister.h
	g++ -c $(Tim.files)main.cpp

Baumeister.o : $(Tim.files)Baumeister.cpp $(Tim.files)Baumeister.h $(Tim.files)Pyramide.h
	g++ -c $(Tim.files)Baumeister.cpp

Pyramide.o : $(Tim.files)Pyramide.cpp $(Tim.files)Pyramide.h $(Tim.files)Ebene.h
	g++ -c $(Tim.files)Pyramide.cpp

Ebene.o : $(Tim.files)Ebene.cpp $(Tim.files)Ebene.h $(Tim.files)Stein.h
	g++ -c $(Tim.files)Ebene.cpp

Stein.o : $(Tim.files)Stein.cpp $(Tim.files)Stein.h
	g++ -c $(Tim.files)Stein.cpp
</code></pre>
<p>Mein g++ sagt mir:<br />
g++ -Wall -o PyramidenBauAlphaV0.5<br />
g++: no input files<br />
make: *** [PyramidenBau] Fehler 1</p>
<p>ich versteh zwar WAS er meint, aber nicht wieso. Weil die Inputfiles müssten doch in der Anweisung &quot;g++ -Wall -o PyramidenBauAlphaV0.5 $(Tim.obj)&quot; mit dem $(Tim.obj) übergeben werden.</p>
<p>danke für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1978632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1978632</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Wed, 10 Nov 2010 18:27:14 GMT</pubDate></item><item><title><![CDATA[Reply to makefile pathvariablen richtig on Thu, 11 Nov 2010 14:41:10 GMT]]></title><description><![CDATA[<p>Der `:=' ist aus meiner Sicht nicht nötig, stört aber nicht.<br />
Das Problem ist der Backslash. Er bedeutet (am Zeilenende), wie übrigens auch in Makros, dass der Zeilenumbruch ignoriert werden soll, die nächste Zeile also dazugehört (siehe <a href="http://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html" rel="nofollow">http://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html</a>).<br />
Tim.obj existiert bei dir gar nicht und hat gar keinen Wert.</p>
<p>Die Lösung: Ein Slash <code>/' anstatt ein Backslash</code>\' funktioniert systemunabhängig und verhält sich immer wie erwartet, er hat keine zusätzliche Bedeutung.</p>
<p>Wenn man sich etwas auskennst, kann man das ganze Makefile so schreiben:</p>
<pre><code>TARGET   := PyramidenBauAlphaV0.5
CCFLAGS  := -g -Wextra -Wall -pedantic-errors
CC       := g++
OBJECTS  := $(patsubst %.cpp, %.o, $(wildcard *.cpp))

.PHONY: all
all: $(TARGET)

$(TARGET): $(OBJECTS)
    $(CC) $(CCFLAGS) -o $(TARGET) $(OBJECTS)

$(OBJECTS): %.o: %.cpp
    $(CC) $(CCFLAGS) -c $&lt; -o $@
</code></pre>
<p>(ungetestet)<br />
`-Wall' nützt dir beim Zusammenlinken übrigens nicht mehr so viel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1978978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1978978</guid><dc:creator><![CDATA[Slasch]]></dc:creator><pubDate>Thu, 11 Nov 2010 14:41:10 GMT</pubDate></item></channel></rss>