コンパイルのすべてのオブジェクト ファイルを別のディレクトリにダンプしています。
objfiles
コンパイル中に、ディレクトリ objfiles の存在を確認したいのですが、存在しない場合 (プロジェクト全体の再コンパイルを示します)、作成したいと思います。
ここに私のMakefileと問題の試みがあります
SHELL := /bin/zsh
#All object files are dumped into OBJDIR
OBJDIR=objfiles
OBJECTS=$(OBJDIR)/main.o \
$(OBJDIR)/printdata.o \
#...
#...
COMPILER=nvcc -arch=sm_20
exec: objdir_exist $(OBJECTS)
$(COMPILER) $(OBJECTS) -o exec
@printf "\nExecutable updated!\n\n"
$(OBJDIR)/main.o: main.cu octree.h
$(COMPILER) -c $< -o $@
$(OBJDIR)/printdata.o: printdata.cu
$(COMPILER) -c $< -o $@
...
#Clean-up executables and object files
.PHONY=clean objdir_exist
clean:
rm exec
rm -r $(OBJDIR)
# Check for the existence of object files.
# If it does not exist, then create another object_file directory to dump data to.
# If it exists do nothing
objdir_exist:
if [ ! -d "$(OBJDIR)" ] then mkdir $(OBJDIR) fi
次のエラーが表示されます。
if [ ! -d "objfiles" ] then mkdir objfiles fi
zsh:[:1: ']' expected
nvcc -arch=sm_20 -c main.cu -o objfiles/main.o
Assembler messages:
Fatal error: can't create objfiles/main.o: No such file or directory
make: *** [objfiles/main.o] Error 1
どこが間違っていますか?