我想使用 CUDA 和 C++ 自动编译玩具库。然后我写了一个Makefile如下
CC=g++
NVCC=nvcc
CXXFLAGS= -fopenmp -O3 -Wextra -std=c++11
CUDAFLAGS= -std=c++11 -c -arch=sm_20
LIBS= -lopenblas -lpthread -lcudart -lcublas
LIBDIRS=-L/usr/local/cuda-7.5/lib64
INCDIRS=-I/usr/local/cuda-7.5/include
matrix_cuda.o: marix_cuda.cu
$(NVCC) $(CUDAFLAGS) matrix_cuda.cu
all: matrix_cuda.o
$(CC) -o test matrix_blas.cpp alg.cpp test.cpp matrix_cuda.o $(LIBDIRS) $(INCDIRS) $(LIBS) $(CXXFLAGS)
clean:
rm -rf test *.o
Run Code Online (Sandbox Code Playgroud)
打字make我得到
make: *** No rule to make target `marix_cuda.cu', needed by `matrix_cuda.o'. Stop.
Run Code Online (Sandbox Code Playgroud)
我以前从未写过Makefile。我哪里做错了?
我认为你的 CUDA 文件名有拼写错误
matrix_cuda.o: marix_cuda.cu
$(NVCC) $(CUDAFLAGS) matrix_cuda.cu
Run Code Online (Sandbox Code Playgroud)
恕我直言,应该是
matrix_cuda.o: matrix_cuda.cu
$(NVCC) $(CUDAFLAGS) matrix_cuda.cu
Run Code Online (Sandbox Code Playgroud)