Ответ, возможно, не тот, который вам понравится, но он не должен вводить изменчивость или повторение в ваших именах файлов. Есть простые или, по крайней мере, разумные способы сформулировать отношения в Makefile
между именами основ, где вы добавляете или удаляете префикс (такой как имя каталога) или суффикс. Все остальное создает осложнения, когда вы сталкиваетесь с замученными и сложными правилами преобразования или внешними вспомогательными сценариями для управления сопоставлениями, или, в худшем случае, с ситуацией, когда вам просто нужно отказаться от make
для управления зависимостями.
Один из обходных путей, который позволяет вам сохранить свой торт и съесть его, - это установить символические ссылки между вашими предпочтительными, дружественными для человека соглашениями об именах и структурами, управляемыми make
; но в лучшем случае это костыль.
Другая техника, которая может быть вам полезна, - touch
простой файл флага, чтобы пометить сложный набор зависимостей как обработанный. Особенно, если есть зависимости, которые не отображаются напрямую в набор имен входных файлов для другой цели, оставляя все эти значения за простым
.input-files-done: some complex depencies
touch $@
, а затем просто зависимость от .input-files-done
для целей, которые разделяют эти зависимости, может упростить ваш Makefile
и рабочий процесс.
Но, в заключение, моя основная рекомендация - сохранять имена файлов единообразными, чтобы вы всегда могли объявить явную зависимость от одного имени файла к другому с помощью простого правила.