Мой проект имеет следующую структуру каталогов:Марка: * .h нет такого файла или каталога
- main.cu
- FA_kernels/* у.е.
- FD_kernels/* у.е.
- MEM_kernels.. /*.cu
- MOD_kernels/*. куб
- заголовки/*. ч
Где * .extension означает кучу файлов с этим расширением. Я не могу заставить makefile работать правильно. Ошибка я получаю:
FA_kernels/FA_SFD.cu:2:20: fatal error: FA_SFD.h: No such file or directory
#include "FA_SFD.h"
^
Моя цель была для -I заголовков необходимо указать компилятору, что делает каталог заголовков для поиска. Ясно, что это не сработало. Вот файл makefile:
CC := nvcc
LD := nvcc
MODULES := FA_kernels FD_kernels MEM_kernels MOD_kernels .
SRC_DIR := $(MODULES)
BUILD_DIR := $(addprefix build/,$(MODULES))
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cu))
OBJ := $(patsubst src/%.cu,build/%.o,$(SRC))
INCLUDES := $(addprefix -I,headers)
vpath %.cu $(SRC_DIR)
define make-goal
$1/%.o: %.cu
$(CC) $(INCLUDES) -c $$< -o [email protected]
endef
.PHONY: all checkdirs clean
all: checkdirs build/lem
build/lem: $(OBJ)
$(LD) $^ -o [email protected]
checkdirs: $(BUILD_DIR)
$(BUILD_DIR):
@mkdir -p [email protected]
clean:
@rm -rf build
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-goal,$(bdir))))
Любые идеи?
UPDATE: Вот полный выход консоли от запуска сделать
nvcc FA_kernels/FA_SFD.cu FA_kernels/partition.cu FA_kernels/contribA.cu FA_kernels/parallel-SFD-List.cu FD_kernels/SFD.cu FD_kernels/flow_routines.cu FD_kernels/floodingDriver.cu FD_kernels/watershed.cu MEM_kernels/memory_dev.cu MEM_kernels/Data.cu MEM_kernels/MapInfo.cu MEM_kernels/memory.cu MOD_kernels/erosion.cu MOD_kernels/eroincidep.cu MOD_kernels/updates.cu MOD_kernels/runoffweight.cu MOD_kernels/depo-List.cu lem.cu -o build/lem
FA_kernels/FA_SFD.cu:2:20: fatal error: FA_SFD.h: No such file or directory
#include "FA_SFD.h"
^
compilation terminated.
Makefile:24: recipe for target 'build/lem' failed
make: *** [build/lem] Error 1
Вставить вызов компилятора, как он напечатан в оболочке. – user657267
@ user657267 см. Обновление – JC2188
Было бы хорошо показать нам, как вы написали инструкцию 'include'. –