Там какой-либо путь состоит в том, чтобы сказать, что, если предпосылка для данной цели не существует затем, игнорируют ту цель?
Например, у меня есть следующий набор папок
chrome_src_folders := $(chrome_src_folder)/content/* \
$(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*
Это - то, где я использую его
$(jar_path): $(chrome_src_folders)
zip -urq $(jar_path) $(chrome_src_folders)
В основном кожа или локаль не могут быть там, который даст мне хорошую ошибку. Как избежать, чтобы ошибка и сделала chrome_src_folders
обязательный? или если я фильтрую так или иначе chrome_src_folders
и оставьте только тех, которые существуют?
Две мысли; Поскольку папки skin и locale необязательны, нужно ли называть их зависимостями? Пусть команды сборки позаботятся о них, если им это нужно. Так что что-то вроде:
chrome_content_folder := $(chrome_src_folder)/content/*
chrome_content_optional := $(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*
$(jar_path): $(chrome_content_folder)
zip -urq $(jar_path) $(chrome_content_folder) $(chrome_content_optional)
Если вам нужно иметь нужные папки в строке зависимостей, чтобы отлавливать ошибки, я бы написал несколько макросов, определяющих, когда и как вы их требуете. Затем соответствующим образом обновите цели, чтобы они требовали эти каталоги только тогда, когда вы знаете, что они необходимы.
Есть несколько способов сделать это; проще всего отфильтровать список с помощью подстановочного знака
chrome_src_folders := $(wildcard $(chrome_src_folder)/content/* \
$(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*)