我正在尝试开始使用 CutTest 在 C 中进行单元测试。
制作时,我收到以下错误:
dev:~/bistro# make
cutest/CuTest.c:10: *** missing separator. Stop.
该文件cutest/CuTest.c
直接来自库。我没有对其进行任何修改。以下是相关行:
08 - #include "CuTest.h"
09 -
10 - /*-------------------------------------------------------------------------*
11 - * CuStr
12 - *-------------------------------------------------------------------------*/
13 -
14 - char* CuStrAlloc(int size)
这是我正在使用的 Makefile,供完整参考:
NAME = bistro
SOURCES_DIR = src
OBJECTS_DIR = obj
SOURCES = $(shell find $(SOURCES_DIR) -type f -name *.c) cutest/CuTest.c
OBJECTS = $(patsubst $(SOURCES_DIR)/%.c, $(OBJECTS_DIR)/%.o, $(SOURCES))
DEPS = $(OBJECTS:.o=.d)
CFLAGS = -Wall -Werror -Wextra
COMPILER = gcc -I cutest -I $(SOURCES_DIR) $(CFLAGS)
BISTRO_MAIN = $(OBJECTS_DIR)/bistro/bistro_main.o
.PHONY: test all clean fclean re
all: $(NAME)
# header dependencies
-include $(DEPS)
$(NAME): $(OBJECTS)
$(COMPILER) -o $(NAME) $(OBJECTS)
test: $(filter-out $(BISTRO_MAIN), $(OBJECTS))
$(COMPILER) -c all_tests.c -o all_tests.o
$(COMPILER) -o test $(filter-out $(BISTRO_MAIN), $(OBJECTS)) all_tests.o
rm -f all_tests.o
$(OBJECTS_DIR)/%.o: $(SOURCES_DIR)/%.c
@if [ ! -d "$(@D)" ]; then mkdir -p $(@D); fi
$(COMPILER) -MMD -c $< -o $@
clean:
rm -Rf $(OBJECTS_DIR)/*
fclean: clean
rm -f $(NAME)
re: fclean all
此错误消息的原因可能是什么?
编辑 1: makefile 仅使用 4 空格制表符缩进。对“查找”命令的调用可能是造成这种情况的原因吗?另外,错误怎么会说缺少的分隔符在 .c 文件中?
编辑 2:接受的答案显示错误。此外,调用不起作用,因为它正在搜索*.c
,应该是"*.c"
。