makefileで次のコマンドを使用しています。
LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp')
結果は次の形式になります。
someDirectory/Common/...
結果にその部分を含めないようにしたいと思いsomeDirectory/
ます。
それは可能ですか?
%P
指定子 toは、検索ディレクトリの後-printf
にパス名の一部を出力します。
find ... -printf '%P\n'
そのようにsedを持っている場合は、それをsedにパイプできます
$(shell find $(COMMON_PATH)/ -type f -name '*.cpp') | sed -e 's/.*\///g
私の構文が正しいとは限りませんが、うまくいくと思いますが、そう思います。
eg にパイプしsed
て、それを削除してもらうのはどうですか?
何かのようなもの:
LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp' | sed 's@someDirectory/@@')
-printf '%P\n'
ソリューションはエレガントです。ただし、 GNU を使用していない場合は、関数find
を使用して問題を解決できます。$(subst from,to,text)
make
LOCAL_FILES = $(subst $(COMMON_PATH)/,,$(shell find $(COMMON_PATH) -type f -name '*.cpp'))
これにより、出現するすべての が$(COMMON_PATH)/
空の文字列に置き換えられます。$(COMMON_PATH)/
これにより、ファイルのパスで文字列が 2 回発生する可能性が低い場合に、文字列が 2 回削除されることに注意してください。