makefile:45:***缺少分隔符。停止[关闭]

问题描述 投票:0回答:1

我已经签出并阅读了我可能应该阅读的所有答案。我尝试添加标签并检查空格。但是,运行make时仍然出现错误。

下面是我的工作树:

$tree 

.
├── bin
├── cu
│   └── kernel_gpu.cu
├── inc
│   └── kernel.h
├── Makefile
├── obj
│   ├── kernel_gpu.o
│   └── main.o
└── src
    ├── kernel.cxx
    └── main.cxx

我尝试使用wildcardpatsubst使我的Makefile看起来不错。这是我的Makefile

DIR_INC = ./inc
DIR_SRC = ./src
DIR_CU  = ./cu
DIR_OBJ = ./obj
DIR_BIN = ./bin


SRC = $(wildcard ${DIR_SRC}/*.cxx)
SRC_CU = $(wildcard ${DIR_CU}/*.cu) 
OBJ = $(patsubst %.cxx,${DIR_OBJ}/%.o,$(notdir ${SRC})) 
CUOBJ = $(patsubst %.cu,${DIR_OBJ}/%.o,$(notdir ${SRC_CU})) 
BIN_TARGET = ${DIR_BIN}/${TARGET}

TARGET = test 

CXX=g++
CU=nvcc

CUDA_INSTALL_PATH= /usr/local/cuda
CUDAFLAGS= -O2 -I. -I$(CUDA_INSTALL_PATH)/include -I ${DIR_INC}
LDFLAGS= -L$(CUDA_INSTALL_PATH)/lib64 -lcudart


${OBJ}:${SRC}
    $(CXX) $(CUDAFLAGS) -c $< -o $@

$(CUOBJ):$(SRC_CU)
    $(CU) $(CUDAFLAGS) -o $@ -c $<

${BIN_TARGET}:${DIR_OBJ}/%.o
    $(CXX) $< -o $@ ${LDFLAGS}

.PHONY: clean
clean:
    find ${DIR_OBJ} -name *.o -exec rm -rf {} \;

在我的shell中键入make时,总是收到相同的错误消息:

$ make
Makefile:45: *** missing separator.  Stop.

第45行是:

44 ${OBJ}:${SRC}
45     $(CXX) $(CUDAFLAGS) -c $< -o $@

我回显了变量${OBJ}${SRC},结果显示为:

./src/main.cxx ./src/kernel.cxx
./obj/main.o ./obj/kernel.o
makefile
1个回答
0
投票

您需要使用硬标签替换这四个空格。

如果您使用某种用空格替换硬标签的编辑器,则需要禁用它或使用其他编辑器。

© www.soinside.com 2019 - 2024. All rights reserved.