Make-файл: проигнорируйте предпосылку, если не существует

Там какой-либо путь состоит в том, чтобы сказать, что, если предпосылка для данной цели не существует затем, игнорируют ту цель?

Например, у меня есть следующий набор папок

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 и оставьте только тех, которые существуют?

6
задан Pablo 7 May 2010 в 13:11
поделиться

2 ответа

Две мысли; Поскольку папки 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)

Если вам нужно иметь нужные папки в строке зависимостей, чтобы отлавливать ошибки, я бы написал несколько макросов, определяющих, когда и как вы их требуете. Затем соответствующим образом обновите цели, чтобы они требовали эти каталоги только тогда, когда вы знаете, что они необходимы.

1
ответ дан 17 December 2019 в 04:43
поделиться

Есть несколько способов сделать это; проще всего отфильтровать список с помощью подстановочного знака

chrome_src_folders  := $(wildcard $(chrome_src_folder)/content/*  \
    $(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*)
4
ответ дан 17 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: