2016-09-03 12 views
0

Makefileを使ってファイルとシンボリックリンクをソースディレクトリ構造から最終的にファイルシステムイメージになるターゲットディレクトリにコピーしています。考え方は、findを使って各ファイルまたはシンボリックリンクの相対パスを取得し、適切なパス接頭辞を追加して、cp -aのソースパスと宛先パスを作成することです。Makefileのシンボリックリンクとシンボリックリンク

CW_SOURCES := $(patsubst %,$(SOURCE)/%,$(shell find $(LOCAL_PATH)/filesystem -type f -o -type l)) 
CW_DESTS := $(subst $(SOURCE)/$(LOCAL_PATH)/filesystem,$(TARGET),$(CW_SOURCES)) 

$(CW_DESTS): $(TARGET)/% : $(SOURCE)/$(LOCAL_PATH)/filesystem/% 
    @echo $< to [email protected] 
    $(eval CW_DIR := $(dir [email protected])) 
    mkdir -p $(CW_DIR) 
    cp -a $< [email protected] 

これはあまりにも長い間、私はそう

make --check-symlink-times all, 
make -L all, 

自身でのオブジェクトが、として不足している依存関係(のようにシンボリックリンクを扱わない作りで作る起動すると、正常に動作シンボリックリンクドン」理由この時点で実際に何かを指している)。

シンボリックリンクはすべてのプラットフォームで互換性がないと言わないでください。私はそれを知っています。

したがって、問題は、このMakefileは長いリストのMakefileが互いに呼び出すので、このMakefileに必要なフラグでmakeを呼び出すことができないということです。

誰かが明示的なこと以外にこの問題を回避する方法を見ているかどうかは疑問です(明らかなのは、シンボリックリンクをターゲットとして扱い、毎回コピーするだけです)。チェーン上の他のMakefileで定義されているいくつかのグローバル変数も、このMakefileで利用できる必要があります。

答えて

1

あなたがメイクファイルの先頭にMAKEFLAGS variableを変更することができます。

MAKEFLAGS += -L 
関連する問題