Запускать тесты нормально, когда не в режиме отладки - PullRequest
1 голос
/ 15 июня 2019

Для моего проекта C ++: Makefile:

GDB=gdb
DEBUG ?= 1
ifeq ($(DEBUG), 1)
    CCFLAGS =-DDEBUG
    RUNPATH =${GDB}
else
    CCFLAGS=-DNDEBUG
    RUNPATH="/bin/sh -c"
endif

CPP=g++ ${CCFLAGS}
TESTGEN=cxxtestgen
CFLAGS_DBG=""
TEST_BUILD_PATH="./build/tests"
BUILD_PATH="./build"
TESTS_SRC_PATH="./tests"
SRC_PATH=""

# NORMAL TARGETS
# To Be filled

# RUN TESTS

test_command_parser_gen:
    ${TESTGEN} --error-printer -o ${TESTS_SRC_PATH}/CommandParser/runner.cpp  ./tests/CommandParser/testCommandParser.h

test_command_parser_build: test_command_parser_gen
    ${CPP} -o ${TEST_BUILD_PATH}/commandParser ${TESTS_SRC_PATH}/CommandParser/runner.cpp ./src/tools/command_parser.cpp

test_command_parser_run: test_command_parser_build
    ${RUNPATH} ./build/tests/commandParser

clean:
    find ./build ! -name '.gitkeep' -type f -exec rm -f {} + && find ./tests ! -name *.h -type f -exec rm -f {} +

Когда я запускаю тесты с помощью команды:

make test_command_parser_run

Как и ожидалось, gdb запускается иЯ могу использовать его для отладки теста.Но иногда мне нужно просто запустить тест как есть (например, в CI), поэтому для этого я использую следующую команду:

make test_command_parser_run DEBUG=0

Но в этом случае я получаю следующую ошибку:

cxxtestgen --error-printer -o "./tests"/CommandParser/runner.cpp  ./tests/CommandParser/testCommandParser.h
g++ -DNDEBUG -o "./build/tests"/commandParser "./tests"/CommandParser/runner.cpp ./src/tools/command_parser.cpp
"/bin/sh -c" ./build/tests/commandParser
/bin/sh: 1: /bin/sh -c: not found
Makefile:31: recipe for target 'test_command_parser_run' failed
make: *** [test_command_parser_run] Error 127

Поэтому я хотел бы узнать, как я могу сказать программе make выполнить тест без gdb, когда not в режиме «отладки».

Вся идея лежит в основеэто как-то автоматически отлаживает мое приложение без необходимости запоминать команду и последовательность компиляции, чтобы сделать это.

1 Ответ

1 голос
/ 15 июня 2019

Удалить кавычки вокруг /bin/sh -c, вот так:

else
  CCFLAGS=-DNDEBUG
  RUNPATH=/bin/sh -c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...