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

二つの考え; スキンとロケール フォルダーはオプションなので、依存関係として呼び出す必要がありますか? 必要に応じて、ビルド コマンドにそれらを処理させます。次のようなものです:

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 に答える