- makefile for C /CUDA project
- 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 $@ $?
- $(CUO_FILES) : $(CU_FILES) $(CUH_FILES)
- $(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o $@ $<
- $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(H_FILES)
- $(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o $@ $<
- <... 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 $@ $?
- $(OBJ_DIR)/%.cu.o : $(SRC_DIR)/%.cu $(CUH_FILES)
- $(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o $@ $<
- $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(H_FILES)
- $(NVCC) $(NVCCFLAGS) $(INCLUDES) -c -o $@ $<
- /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.
- TARGET = nothing
- 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=.
- OBJS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(notdir $(CPP_FILES)))
- OBJS += $(patsubst %.cu,$(OBJ_DIR)/%.cu.o,$(notdir $(CU_FILES)))
- $(TARGET) : $(OBJS)
- echo "linking rule : " -o $@ $?
- $(OBJ_DIR)/%.cu.o : $(SRC_DIR)/%.cu $(CUH_FILES)
- echo ".cu.o rule : " $@ $<
- touch $@
- $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(H_FILES)
- echo ".o rule : " $@ $<
- touch $@
- $ mkdir src
- $ mkdir obj
- $ touch src/main.cpp
- $ touch src/cuda-utils.cuh
- $ touch src/thrust.cu
- $ touch src/cuda-utils.cu
- $ touch src/util.cpp
- $ touch src/main.cpp
- $ ls
- Makefile obj src
- $ ls src
- cuda-utils.cu cuda-utils.cuh main.cpp thrust.cu util.cpp
- $ ls obj
- $ make
- echo ".o rule : " obj/main.o src/main.cpp
- .o rule : obj/main.o src/main.cpp
- touch obj/main.o
- echo ".o rule : " obj/util.o src/util.cpp
- .o rule : obj/util.o src/util.cpp
- touch obj/util.o
- echo ".cu.o rule : " obj/cuda-utils.cu.o src/cuda-utils.cu
- .cu.o rule : obj/cuda-utils.cu.o src/cuda-utils.cu
- touch obj/cuda-utils.cu.o
- echo ".cu.o rule : " obj/thrust.cu.o src/thrust.cu
- .cu.o rule : obj/thrust.cu.o src/thrust.cu
- touch obj/thrust.cu.o
- echo "linking rule : " -o nothing obj/main.o obj/util.o obj/cuda-utils.cu.o obj/thrust.cu.o
- linking rule : -o nothing obj/main.o obj/util.o obj/cuda-utils.cu.o obj/thrust.cu.o
- $ ls obj
- cuda-utils.cu.o main.o thrust.cu.o util.o