7

有没有办法说如果给定目标的先决条件不存在,那么忽略该目标?

例如,我有以下一组文件夹

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并只留下那些存在的?

4

2 回答 2

4

有不止一种方法可以做到这一点。最简单的是使用过滤列表wildcard

chrome_src_folders  := $(wildcard $(chrome_src_folder)/content/*  \
    $(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*)
于 2010-05-07T14:20:20.853 回答
1

两个想法;由于 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)

如果您必须在依赖项行上有正确的文件夹,以便捕获错误,我会编写一些宏来定义何时以及如何需要它们。然后相应地更新您的目标,以便仅在您知道需要这些目录时才需要它们。

于 2010-05-07T14:08:14.933 回答