Makefile

Alpha63

Mitglied
Hallo,

kennt jemand von euch gute Makefile tutorials?
Weil ich nicht ganz genau weiß wie ich das hier umzusetzen habe.
Es geht um:

Code:
nvcc -c -o matrix_add_dyn.o matrix_add_dyn.cu
gcc -c -o main.o main.c

gcc -o cuda_test main.o matrix_add_dyn.o -L/usr/local/cuda/lib -lcudart

Ich habe bis jetzt

Code:
main.o: main.c
        gcc -c -o main.c

matrix_add_dyn.o: matrix_add_dyn.cu
        nvcc -c -o matrix_add_dyn.o matrix_add_dyn.cu

clean: rm *.o

Vielen Dank im vorraus.
 
Sieht soweit schon mal gut aus,
du brauchst nur noch das Target cuda_test
Code:
cuda_test: main.o matrix_add_dyn.o
        gcc -o cuda_test main.o matrix_add_dyn.o -L/usr/local/cuda/lib -lcudart

Es ist oft sinnvoll Compilerflags, Includes usw, als Parameter zu definieren, dann muss man das bei längeren Projekten nur einmal definieren:
Code:
LIBOPT=-L/usr/local/cuda/lib -lcudart
cuda_test: main.o matrix_add_dyn.o
        gcc -o cuda_test main.o matrix_add_dyn.o $(LIBOPT)
Ausserdem wird man normalerweise zwischen Debug und Release unterscheiden, z.B. so
Code:
ifdef DEBUG
  COMPILERFLAGS= -g -O0
else
  COMPILEREFLAGS= -O2
endif
main.o: main.c
        gcc -c -o $(COMPILERFLAGS) main.c
 
matrix_add_dyn.o: matrix_add_dyn.cu
        nvcc -c -o $(COMPILERFLAGS) matrix_add_dyn.o matrix_add_dyn.cu
Der Aufruf "make DEBUG=1 cuda_test" erzeugt dann die Debugversion und "make cuda_test" die optimierte.
Ein Tutorial findest du z.B. hier
http://www.ijon.de/comp/tutorials/makefile.html

Suchbegriffe: make tutorial
 
Hallo,

ich persönlich finde es meistens leichter tools wie cmake oder ähnliches zu verwenden, statt die Makefiles selbst manuell an zu legen. Vielleicht wäre das ja auch was für dich?

Gruß,
Der Wolf
 
Zurück