ここでは、CUDA、C++ &メイクファイルに関するほとんどすべての質問を読んだことがありますが、それでも私の問題を解決することはできません。C++/CUDAプロジェクトのメイクファイル
私はいくつかの.cpp
ファイル&(.h
& .cuh
と一緒に)私のプロジェクトのsrc/
ディレクトリ内のいくつかの.cu
のファイルを持っている、と私はメイクで自分のアプリケーションを構築したいと思います。
私は、このようにそれを行うことを試みた:
SRC_DIR = src
OBJ_DIR = obj
CPP_FILES = $(wildcard $(SRC_DIR)/*.cpp)
CU_FILES = $(wildcard $(SRC_DIR)/*.cu)
H_FILES = $(wildcard $(SRC_DIR)/*.h)
CUH_FILES = $(wildcard $(SRC_DIR)/*.cuh)
OBJ_FILES = $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o)))
CUO_FILES = $(addprefix $(OBJ_DIR)/,$(notdir $(CU_FILES:.cu=.cu.o)))
$(TARGET) : $(OBJ_FILES) $(CUO_FILES)
$(LD) $(LDFLAGS) $(LIB_CUDA) -o [email protected] $?
$(CUO_FILES) : $(CU_FILES) $(CUH_FILES)
$(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o [email protected] $<
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(H_FILES)
$(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o [email protected] $<
そして、私は二.cuファイルを持ってまで、それはOKでした。 そして私が試した:
<... previous part stays the same ...>
OBJS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(notdir $(CPP_FILES)))
OBJS += $(patsubst %.cu,$(OBJ_DIR)/%.cu.o,$(notdir $(CU_FILES)))
$(TARGET) : $(OBJS)
$(LD) $(LDFLAGS) $(LIB_CUDA) -o [email protected] $?
$(OBJ_DIR)/%.cu.o : $(SRC_DIR)/%.cu $(CUH_FILES)
$(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o [email protected] $<
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(H_FILES)
$(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o [email protected] $<
しかしは今.cu.o
のいずれかのファイルを作成する方法を見つけ出すことはできませんします。 アプリケーションをビルドするためにこのことをどのように変更する必要がありますか?
ありがとうございます!
UPDは - 2番目のメイクファイルを作るの出力:
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -c -o obj/main.o src/main.cpp
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -c -o obj/util.o src/util.cpp
make: *** No rule to make target `obj/thrust.cu.o', needed by `DCG'. Stop.
プロジェクトファイル(SRC /):
- main.cppに
- utils.h util.cppを
- thrust.cu
- thrust.cuh cuda-utils.cu
- CUDA-utils.cuh
5行目にタブが表示されていないようですが、ここに入力されたのか、それともあなたのMakefileにありますか? –
私はそれがタイプミスだったと思う。今は大丈夫だと思います。 – Eralde