Я прохожу курс C ++ в колледже, и они хотят, чтобы мы вручную набирали все тестовые файлы ... Однако я знаю, что есть способ сделать это без меня, так я и закончил текущий (http://pastebin.com/6d9UtKM4) make-файл. Мой вопрос: почему этот make-файл автоматически удаляет все файлы .o, которые он использует для компиляции, когда это сделано? Это не убивает меня, но я хотел бы чтобы сохранить .o файлы. Я вставил make-файл сюда (http://pastebin.com/6d9UtKM4). Я также вставил текущий результат запуска "make tests" здесь ( http://pastebin.com/h3Ny3dib). (Обратите внимание на часть внизу этой страницы, которая автоматически удаляет все файлы .o.)
Я бы также хотел, чтобы он генерировал его так:
- g ++ -o compileDir / assemblyr.o -c -Wall src / assemblyr.cpp
- g ++ -o compileDir / string.o -c -Wall src / string.cpp
- g ++ -c -Wall -o compileDir / test_assignment.o testSrc / test_assignment.cpp
- g ++ -o testDir / test_assignment compileDir / test_assignment.o compileDir / string.o compileDir / assemblyr.o
- g ++ -c -Wall -o compileDir / test_bracket.o testSrc / test_bracket.cpp
- g ++ -o testDir / test_bracket compileDir / test_bracket.o compileDir / string.o compileDir / assemblyr.o
- testDir / test_bracket
- testDir / test_assignment
Другими словами, я хочу, чтобы он все компилировал, а потом все запускал. Я надеюсь, что это не слишком много, чтобы спросить!
Редактировать: Дополнительная информация: (Это код, который "делает тесты")
tests: assembler.o string.o $(test_output) $(test_stringOutput)
@echo '--- Testing complete ---'
$(testDir)%: $(compileDir)%.o string.o
g++ -o $@ $< $(compileDir)string.o $(compileDir)assembler.o
$@
@echo ''
$(compileDir)%.o: $(testSourceDir)%.cpp
g++ -c -Wall -o $@ $<
$(compileDir)%.o: $(testStringSrc)%.cpp
g++ -c -Wall -o $@ $<
РЕДАКТИРОВАТЬ: -----------------------------------------
Решено с помощью комментариев:
Добавление этой строки исправило это:
.PRECIOUS $ (compileDir)%. O