cuda 和 C++ 文件混编Makefile 实现

.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();

你可能感兴趣的:(GPU)