gpt4 book ai didi

c++ - 返工 make 文件以将 obj 放入不同的位置

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:48 26 4
gpt4 key购买 nike

下面是我的makefile

# Location of the CUDA Toolkit
CUDA_PATH ?= /usr/local/cuda-6.0
NVCC := $(CUDA_PATH)/bin/nvcc -ccbin g++
APP := app
OBJ := obj

source_files = $(shell find ./src -type f -regex '.*\.\(c\|cu\|cpp\)' | sed 's/^\.\/src\///')
obj_files = $(patsubst .c,obj/.o,$(patsubst .cpp,obj/.o,$(patsubst .cu,obj/.o,$(source_files))))

vpath %.c ./src/
vpath %.cpp ./src/
vpath %.cu ./src/

# Target rules
all: exe

%.o: %.cu
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

exe: $(obj_files)
$(NVCC) $^ -o $(APP)

run: exe
./$(APP)

clean:
rm -f $(APP) obj/*.o

clobber: clean

我有两个问题:

1) 如何让 makefile 与 cpp、c 和 cu 文件一起工作现在,我有

%.o: %.cu
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

但是,我想要这样的东西

%.o: %.cu, %.cpp, %.c
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

2) 如何将 obj 放置到不同的位置。在我的 makefile 中,我有变量 $(OBJ) = obj 并且我想将目标文件放入此目录中。我该怎么做?

最佳答案

1) 您将需要三个单独的规则。 2) 这并不困难,但如果目标的名称不是规则实际产生的名称,您可能会遇到麻烦,所以请拼写出来。

我不习惯使用 cuda 代码,所以我假设您的食谱可以使用编写的 C 或 C++ 代码。

$(OBJ)/%.o: %.cu
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

$(OBJ)/%.o: %.cpp
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

$(OBJ)/%.o: %.c
-mkdir -p $(dir $@)
$(NVCC) $+ -c -o $@

关于c++ - 返工 make 文件以将 obj 放入不同的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com