Задача make с полужирным символом, команда make с .class, зависимость от соответствующего файла .java - PullRequest
0 голосов
/ 04 мая 2019

Итак, я создаю make-файл, следуя правилам моей домашней работы. Мы работаем с файлами Java в следующих форматах: (vehicle) .java и затем (vehicle) Tester.java, где (vehicle) заменяется другими именами.

Итак, есть два вопроса, по которым я полностью потерян.

  1. Задайте цель, когда вводится, а затем зависимость находится в соответствующем файле .java. Тем не менее, я не знаю, как сделать это так, чтобы я не писал такую ​​цель для каждого (транспортного средства) файла .java. Я не знаю, как использовать подстановочный подход к этому.

  2. Это похоже на единицу, однако это цель, когда вводится, и это зависит от соответствующего (транспортного средства) файла 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 не был обновлен

...