在makefile中编译cuda文件时出错

在makefile中编译cuda文件时出错,makefile,cuda,nvcc,Makefile,Cuda,Nvcc,为了编译我的文件,我制作了一个makefile: CFLAGS = -O3 -Wall -I /usr/local/cuda/include/ NVCCFLAGS = -O3 -arch sm_20 LDFLAGS = -O3 -L/usr/local/cuda/lib64 -lcudart EXE = runAPP app.o:app.cu $(NVCC) $(NVCCFLAGS) -c $< -o $(CPPFLAGS) $(

为了编译我的文件,我制作了一个makefile:

CFLAGS        = -O3 -Wall -I /usr/local/cuda/include/ 
NVCCFLAGS     = -O3 -arch sm_20
LDFLAGS       = -O3 -L/usr/local/cuda/lib64 -lcudart
EXE           =  runAPP

app.o:app.cu
$(NVCC) $(NVCCFLAGS) -c $< -o $(CPPFLAGS) $(LIB_PATH) $(LDFLAGS) $@

$(EXE): app.o 
    $(NVCC) $(NVCCFLAGS) $(CFLAGS) $(LDFLAGS) -o $@  $(CPPFLAGS) $(LIB_PATH) app.o  \
        -lANN_char -lz
    cp $@ ../bin
CFLAGS=-O3-Wall-I/usr/local/cuda/include/
NVCCFLAGS=-O3-拱门sm_20
LDFLAGS=-O3-L/usr/local/cuda/lib64-lcudart
EXE=runAPP
app.o:app.cu
$(NVCC)$(NVCCFLAGS)-c$<-o$(CPPFLAGS)$(LIB_路径)$(LDFLAGS)$@
$(EXE):app.o
$(NVCC)$(NVCCFLAGS)$(CFLAGS)$(LDFLAGS)-o$@$(CPPFLAGS)$(LIB_PATH)app.o\
-兰努查尔-lz
cp$@../bin
但我遇到了这个问题:

app.cpp:26:26:错误:cuda_runtime.h:没有这样的文件或目录 app.cpp:27:18:错误:cuda.h:没有这样的文件或目录

以下是我在app.cpp中包含它们的方式:

#include <cuda.h>
#include <cuda_runtime.h>
#包括
#包括
为什么会出现这个问题

我在谷歌上搜索了一些东西,他们说app.cpp必须始终是app.cu,这是真的吗


提前谢谢

如果使用makefile,您有:


CFLAGS=-O3-墙-I/usr/local/cuda/include/
NVCCFLAGS=-O3-拱门sm_20
LDFLAGS=-O3-L/usr/local/cuda/lib64-lcudart
EXE=runAPP

app.o:app.cu $(NVCC)$(NVCCFLAGS)-c$<-o$(CPPFLAGS)$(LIB_路径)$(LDFLAGS)$@


我们应该扩张到零;尝试将其更改为CFLAGS,或将CFLAGS更改为cppfagas。

您没有显示
app.o
的编译规则。它是如何编译成对象的?您展示的makefile只描述了如何通过链接
app.o
和一些库来构建
runApp
。但是您尚未显示
app.o
的生成规则。我要求你给我看一下。app.o:app.cu$(NVCC)-c%<$(CFLAGS)$(LDFLAGS)-o$@我刚刚添加了,但我得到了:缺少分隔符请编辑问题以显示实际的生成文件和实际的错误……没问题。我自己也有过这样的时刻 CFLAGS = -O3 -Wall -I /usr/local/cuda/include/ NVCCFLAGS = -O3 -arch sm_20 LDFLAGS = -O3 -L/usr/local/cuda/lib64 -lcudart EXE = runAPP

app.o:app.cu $(NVCC) $(NVCCFLAGS) -c $< -o $(CPPFLAGS) $(LIB_PATH) $(LDFLAGS) $@