Итак, я создаю make-файл, следуя правилам моей домашней работы. Мы работаем с файлами Java в следующих форматах: (vehicle) .java и затем (vehicle) Tester.java, где (vehicle) заменяется другими именами.
Итак, есть два вопроса, по которым я полностью потерян.
Задайте цель, когда вводится, а затем зависимость находится в соответствующем файле .java. Тем не менее, я не знаю, как сделать это так, чтобы я не писал такую цель для каждого (транспортного средства) файла .java. Я не знаю, как использовать подстановочный подход к этому.
Это похоже на единицу, однако это цель, когда вводится, и это зависит от соответствующего (транспортного средства) файла Tester.java и (транспортного средства) .java.
Я потерян на обоих из них.
Я пытался использовать символ% с .class, но тогда мой make по умолчанию не работает, и из того, что я прочитал, это потому что. делает это приоритетом. Кроме этого, я только что потерян.
Однако я создал цели, которые компилируют все файлы тестера по отдельности, а также файлы не тестера. У меня тоже есть цель по чистоте. Я покажу весь код, который у меня есть ниже, но у меня нет ничего для моих двух проблем
'' '
Хранит все (транспортное средство) .java файлы, отфильтровывает (транспортное средство) Tester.java
файлы
all_java = $ (отфильтровать% Tester.java, $ (подстановочный знак * .java))
Conserts (транспортное средство) .java файлы к (транспортное средство) .class файлы, сортировки
Vehicles_class = $ (sort $ (all_java: .java = .class))
Преобразует файлы (транспортного средства) .java в файлы (транспортного средства) Tester.class, сортирует
test_class = $ (sort $ (all_java: .java = Tester.class))
цель по умолчанию, компилирует все .java файлы, используя макрос
транспортных средств: $ (Vehicles_class)
цель для компиляции (транспортного средства) файлов Tester.java с использованием макроса
тесты: $ (test_class)
цель для очистки каталога
.PHONY: чистый
чистить:
rm -rf * .class
суффиксное правило
.SUFFIXES: .java .class
.java.class:
Javac $ <
'' '
Итак, у меня есть цель по умолчанию для (vehicle) .java-файлов, цель для (vehicle) файлов Tester.java и чистая для всех работ. Как показывает мое тестирование, эти две цели также не будут компилироваться, если только файл .java не был обновлен