我在makefile中使用以下命令:
LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp')
结果如下:
someDirectory/Common/...
我希望结果不包含someDirectory/
部分。
这可能吗?
答案 0 :(得分:5)
%P
的{{1}}说明符将在搜索目录后打印路径名的一部分。
-printf
答案 1 :(得分:0)
如何管道到例如sed
并将其删除?
类似的东西:
LOCAL_FILES = $(shell find $(COMMON_PATH)/ -type f -name '*.cpp' | sed 's@someDirectory/@@')
答案 2 :(得分:0)
如果你喜欢这样的话,你可以将它传输到sed
$(shell find $(COMMON_PATH)/ -type f -name '*.cpp') | sed -e 's/.*\///g
我认为这应该不确定我的语法是否正确,但我想是的。
答案 3 :(得分: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)/
字符串删除两次。