.PHONY: all clean
CUDA_LIB_DIR := /usr/local/cuda/lib64
LIBS += -lcudart
LIBS += -lcuda
CU_SRCS := $(wildcard *.cu)
CU_OBJS := $(CU_SRCS:%.cu=%.o)
C_SRCS := $(wildcard *.cpp)
C_OBJS := $(C_SRCS:%.c=%.o)
EXECUTABLE := hello
all : $(EXECUTABLE)
$(CU_OBJS):$(CU_SRCS)
nvcc -c $^
$(C_OBJS):$(C_SRCS)
g++ -c $^
$(EXECUTABLE):$(CU_OBJS) $(C_OBJS)
g++ -o $@ $^ -L$(CUDA_LIB_DIR) $(LIBS)
clean:
rm $(EXECUTABLE) $(CU_OBJS)
需要在 .cu 的函数实现和调用文件的声明处都对和函数加上 extern “C”。
.cu 文件中实现
extern "C" void fun()
{
}
在.cpp 中调用之前需要声明函数
extern "C" void fun();