【发布时间】:2021-10-25 23:03:11
【问题描述】:
文件结构:
cpp
| Makefile
|
| obj
|___include
| | a.cuh
| | b.cuh
| | c.cuh
|
|___src
| | a.cu
| | b.cu
| | c.cu
我对 GNU make 没有太多经验。以下是根据 Stackoverflow 上的不同搜索结果编写的。 $@ 变量正确地从列表中获取每个目标文件的名称,但是 $< 变量仅获取源文件名列表中的第一项(根据手册,但这就是所有堆栈溢出的答案我发现正在使用1、2、3)。
NVCC=nvcc
LIB = lib.dll
SRC_DIR = src
INC_DIR = include
OBJ_DIR = obj
CU_FILES = $(wildcard $(SRC_DIR)/*.cu)
CUH_FILES = $(wildcard $(INC_DIR)/*.cuh)
CUO_FILES = $(addprefix $(OBJ_DIR)/,$(notdir $(CU_FILES:.cu=.obj)))
$(LIB): $(CUO_FILES)
$(NVCC) --shared $^ -o $@
$(CUO_FILES): $(CU_FILES) $(CUH_FILES)
$(NVCC) -dc $< -o $@
【问题讨论】:
标签: makefile dependencies header-files nvcc