2017-09-21 11 views
0

以下のフィルタステートメントを正しく動作させようとしていますが、そうではありません。 exportedLibariesは、それが(すなわちexport/*/*/*/filenameワイルドカードが同じ方法で動作しない、または意図したとおりに動作しない

dev := $(filter HelloWorld%, $(exportedLibraries)) 

から実行させる私はユニットテストのために同様のフィルタを使用し、それは(相対パスが同じである)素晴らしく働く場所からのファイルへの相対パスが含まれています

unitTests := $(filter %_Test, $(exportedUnitTests)) 

しかし、これは...

dev := $(filter $(wildcard export/**/**/**/HelloWorld*), $(exportedLibraries)) 

は私が間違って何をやっている作品?

+0

もしあなたの説明が正しいとすれば、最初のフィルタは動作しません。なぜなら$(exportedLibraries)の名前には 'export /'で始まるパスが含まれていますが、パターンに接頭辞付きのパス( 'HelloWorld%')はありません。 – Vroomfondel

+0

2番目のフィルタでは、$(exportedUnitTests)には、エクスポート – ILostMySpoon

+0

で始まるパスも含まれていますが、私は$ filterの最初の引数について話しています。これは、動作しないケースでは 'HelloWorld%'(パスなし)それ以外の場合は 'export/whatever/nother/onemore/HelloWorldxyz'となります。 – Vroomfondel

答えて

2

$(notdir)あなたはこのケースで何をしたいです:

exportedLibraries := export/foo/helloworld.lib export/bar/HelloWorld.lib export/baz/HelloWorldTwo.lib 

dev := $(foreach lib,$(exportedLibraries),$(if $(filter HelloWorld%,$(notdir $(lib))),$(lib))) 

$(info $(dev)) 

あなたは結果に余剰スペースを取り除くために$(foreach)の結果を$(strip)ことができます。

関連する問題