Pab*_*blo 6 makefile prerequisites optional
有没有办法说如果给定目标的先决条件不存在,则忽略该目标?
例如,我有以下一组文件夹
chrome_src_folders := $(chrome_src_folder)/content/* \
$(chrome_src_folder)/locale/* $(chrome_src_folder)/skin/*
Run Code Online (Sandbox Code Playgroud)
这是我用的地方
$(jar_path): $(chrome_src_folders)
zip -urq $(jar_path) $(chrome_src_folders)
Run Code Online (Sandbox Code Playgroud)
基本上,皮肤或语言环境可能根本不存在,这将给我带来一个不错的错误。如何避免该错误并chrome_src_folders强制执行?还是应该以某种方式过滤chrome_src_folders并只保留那些存在的内容?
两个想法;由于皮肤和语言环境文件夹是可选的,您是否需要将它们称为依赖项?如果需要的话,让构建命令来处理它们。所以像这样:
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)
Run Code Online (Sandbox Code Playgroud)
如果您必须在依赖行上拥有正确的文件夹,以便捕获错误,我会编写一些宏来定义何时以及如何需要它们。然后相应地更新您的目标,以便仅在您知道需要这些目录时才需要它们。