# 编译器,未指定则优先考虑 nvcc CXX_COMPILER ?= $(if $(shell which nvcc 2>/dev/null),nvcc,hipcc) CXX_FLAGS ?= -std=c++17 -O3 HIPIFY ?= hipify-perl HEADERS := $(wildcard *.h) SRCS := $(wildcard *.cu) TARGETS := $(SRCS:.cu=) .PHONY: all clean all: $(TARGETS) ifeq ($(CXX_COMPILER),nvcc) # nvcc 编译 %: %.cu $(HEADERS) nvcc $(CXX_FLAGS) -o $@ $< else # 先转码再用 hipcc 编译 %: %.cu $(HEADERS) $(HIPIFY) $< > $@.hip $(CXX_COMPILER) $(CXX_FLAGS) -o $@ $@.hip rm $@.hip endif clean: rm -f $(TARGETS)