@Nameisconfidentialinfo

Причина ошибки при выполнении Make check?

Занимаюсь по книге "Learn C the hard way". Не особо разобрался с тем как работает Makefile, лишь поверностно.
1 CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS)
  2 LIBS=-ldl $(OPTLIBS)
  3 PREFIX?=/usr/local
  4 
  5 SOURCES=$(wildcard src/**/*.c src/*.c)
  6 OBJECTS=$(patsubst %.c,%.o,$(SOURCES))
  7 
  8 TEST_SRC=$(wildcard tests/*_tests.c)
  9 TESTS=$(patsubst %.c,%,$(TEST_SRC))
 10 
 11 TARGET=build/libYOUR_LIBRARY.a
 12 SO_TARGET=$(patsubst %.a,%.so,$(TARGET))
 13 
 14 # The Target Build
 15 all: $(TARGET) $(SO_TARGET) tests
 16 
 17 dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS)
 18 dev: all
 19 
 20 $(TARGET): CFLAGS += -fPIC
 21 $(TARGET): build $(OBJECTS)
 22     ar rcs $@ $(OBJECTS)
 23     ranlib $@
 24 $(SO_TARGET): $(TARGET) $(OBJECTS)
 25     $(CC) -shared -o $@ $(OBJECTS)
 26 
 27 build:
 28     @mkdir -p build
 29     @mkdir -p bin
 30 
 31 # The Unit Tests
 32 .PHONY: tests
 33 tests: CFLAGS += $(TARGET)
 34 tests: $(TESTS)
 35     sh ./tests/runtests.sh
 36 
 37 # The Cleaner
 38 clean:
 39     rm -rf build $(OBJECTS) $(TESTS)
 40     rm -f tests/tests.log
 41     find . -name "*.gc*" -exec rm {} \;
 42     rm -rf `find . -name "*.dSYM" -print`
 43 
 44 # The Install
 45 install: all
 46     install -d $(DESTDIR)/$(PREFIX)/lib/
 47     install $(TARGET) $(DESTDIR)/$(PREFIX)/lib/
 48 
 49 # The Checker
 50 check:
 51     @echo Files with potentially dangerous functions.
 52     @egrep '[^_.>a-zA-Z0-9](str(n?cpy|n?cat|xfrm|n?dup|str|pbrk|tok|_)\
 53                 |stpn?cpy|a?sn?printf|byte_)' $(SOURCES) || true


При выполнении make clean - все ок. Но при написании make check выдает следующее:
Files with potentially dangerous functions.
grep: Trailing backslash

Также имеется файл runtests.sh, вот его код:
1 echo "Running unit tests:"
  2 
  3 for i in tests/*_tests
  4 do
  5     if tests -f $i
  6     then
  7         if $VALGRIND ./$i 2>> tests/tests.log
  8             then
  9                 echo $i PASS
 10             else
 11                 echo "ERROR in test $i: here's tests/tests.log"
 12                 echo "------"
 13                 tail tests/tests.log
 14                 exit 1
 15             fi
 16         fi
 17     done
 18 
 19     echo ""
~


Имеется папка в которой имеется Makefile и папка tests. В папке tests находится вышеописанный файл.

Извиняюсь, если написал лишнего. Долго мучился над этой проблемой раньше, забил на книгу, но в итоге решил продолжить.
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
grep: Trailing backslash


@egrep '[^_.>a-zA-Z0-9](str(n?cpy|n?cat|xfrm|n?dup|str|pbrk|tok|_)\


Сделайте регулярку в одну строку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Avtodoria Казань
До 90 000 ₽
VMS Software Санкт-Петербург
от 110 000 ₽
Wärtsilä Digital Technologies Санкт-Петербург
До 180 000 ₽
15 авг. 2020, в 01:45
95000 руб./за проект
14 авг. 2020, в 22:47
15000 руб./за проект
14 авг. 2020, в 22:40
15000 руб./за проект