Пожалуйста, прости меня, если это повторный вопрос. Я довольно новичок в написании Makefiles, и поэтому я не был уверен, как найти то, что ищу.
Я знакомлюсь с Boost.Test и пишу модульные тесты для каждого файла базис.
Это моя структура каталогов:
- cpp
- sim
- Makefile
- bin
- src
- ExampleClass.cpp
- tests
- Makefile
- bin
- src
-ExampleClass_T.cpp
По сути, я хотел бы написать отдельные *. cpp файлы тестовых примеров с использованием Boost, как показано выше.
Вот содержимое моих тестов / Makefile:
CC = g++
CPPFLAGS = -g -v -Wall -I$(ODIR_TEST) -I$(SDIR_TEST) \
-I$(SDIR) -I$(ODIR) -I$(BOOST_ROOT)
ODIR_TEST = ./bin
SDIR_TEST = ./src
ODIR = ../sim/bin
SDIR = ../sim/src
%.out : $(SDIR_TEST)/%.cpp
$(CC) $(CPPFLAGS) -o $< $@
при выполнении make
генерируется Нет целей. Стоп. Сообщение об ошибке. Любые идеи о том, почему заставить думать, что нет цели? Не будет ли% .out действовать здесь как цель, или подстановочный знак не будет действовать таким образом?
Я понимаю, что в Makefile выше я пытаюсь сгенерировать файл * .out для каждого *. cpp файл; Кроме того, я хотел бы создать конечный исполняемый файл, который является кульминацией всех сгенерированных файлов * .out. Возможно ли это, или я подхожу к этому неправильно?
Любой другой совет или лучшие практики Makefile, особенно в отношении автоматизации тестирования, будут высоко оценены.