0

makefileで次のコマンドを使用しています。

LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp')

結果は次の形式になります。

someDirectory/Common/...

結果にその部分を含めないようにしたいと思いsomeDirectory/ます。

それは可能ですか?

4

4 に答える 4

5

%P指定子 toは、検索ディレクトリの-printfにパス名の一部を出力します。

find ... -printf '%P\n'
于 2012-08-15T07:04:16.147 に答える
0

そのようにsedを持っている場合は、それをsedにパイプできます

$(shell find $(COMMON_PATH)/ -type f -name '*.cpp') | sed -e 's/.*\///g

私の構文が正しいとは限りませんが、うまくいくと思いますが、そう思います。

于 2012-08-15T07:08:06.973 に答える
0

eg にパイプしsedて、それを削除してもらうのはどうですか?

何かのようなもの:

LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp' | sed 's@someDirectory/@@')
于 2012-08-15T07:02:06.173 に答える
0

-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 回削除されることに注意してください。

于 2012-08-15T07:12:34.967 に答える