patsubst %.Android.mk, %.cpp, $(wildcard $(abspath $(LOCAL_PATH))/*.Android.mk)
时间: 2024-03-05 21:49:53 浏览: 29
这是一个 GNU Make 中的模式替换函数,它的作用是将 $(abspath $(LOCAL_PATH)) 目录下所有的 .Android.mk 文件名替换成对应的 .cpp 文件名。
具体来说,它的语法如下:
```makefile
$(patsubst pattern,replacement,text)
```
其中,pattern 是要匹配的模式,通常使用 % 通配符表示任意字符;replacement 是要替换成的内容,其中也可以使用 % 通配符表示与 pattern 中匹配的部分;text 则是要进行替换的文本。
在上面的代码中,pattern 是 %.Android.mk,replacement 是 %.cpp,text 则是通过 $(wildcard $(abspath $(LOCAL_PATH))/*.Android.mk) 函数获取到的所有 .Android.mk 文件名。函数会将每个文件名中的 %.Android.mk 替换成 %.cpp,得到对应的 .cpp 文件名列表。
相关问题
LOCAL_SRC_FILES := $(filter-out $(patsubst %.Android.mk, %.cpp, $(wildcard $(abspath $(LOCAL_PATH))/*.Android.mk)), $(wildcard $(abspath $(LOCAL_PATH))/*.cpp))
这是一个 Android NDK 中的 Makefile 语法,用于获取当前目录下所有的 .cpp 文件,并排除掉同目录下的 .Android.mk 文件(如果有的话)。该语法可以用于将当前目录下的所有 .cpp 文件编译为一个库文件。具体来说,`$(abspath $(LOCAL_PATH))` 获取当前目录的绝对路径,`$(wildcard $(abspath $(LOCAL_PATH))/*.cpp)` 获取该目录下的所有 .cpp 文件,`$(wildcard $(abspath $(LOCAL_PATH))/*.Android.mk)` 获取该目录下的所有 .Android.mk 文件,`$(patsubst %.Android.mk, %.cpp, ...)` 将所有 .Android.mk 文件的文件名替换为对应的 .cpp 文件名,`$(filter-out ...)` 过滤掉这些 .cpp 文件。最终得到的是除了 .Android.mk 文件之外的所有 .cpp 文件。
SRC=$(wildcard *.cpp) OBJ=$(patsubst %.cpp, %.o,$(SRC))
这是一个 Makefile 中的语句,用于定义变量。其中:
- `SRC=$(wildcard *.cpp)` 表示将当前目录下所有的 `.cpp` 文件的文件名保存到 `SRC` 变量中,使用了 `wildcard` 函数。
- `OBJ=$(patsubst %.cpp, %.o,$(SRC))` 表示将 `SRC` 变量中的每个 `.cpp` 文件名替换成对应的 `.o` 文件名,并将结果保存到 `OBJ` 变量中,使用了 `patsubst` 函数。
举个例子,如果当前目录下有 `foo.cpp` 和 `bar.cpp` 两个文件,那么执行完上述语句后,`SRC` 变量的值为 `foo.cpp bar.cpp`,`OBJ` 变量的值为 `foo.o bar.o`。这样在后续的编译过程中,就可以方便地使用这两个变量来指定源文件和目标文件。