如何将.c和.cpp文件替换在一起?

Rob*_*bin 2 makefile

我目前有一个Android.mk文件.对于某些要求,我需要编写一个标准的GNU make文件来构建相同的程序.

正如您在Android本机构建中所知,我们只是简单地将所有源文件放在一起

LOCAL_SRC_FILES := a.c b.c d.cpp e.cpp
Run Code Online (Sandbox Code Playgroud)

现在我想在Makefile中做一些事情:

OBJ = $(LOCAL_SRC_FILES: .c=.o)
Run Code Online (Sandbox Code Playgroud)

这只会转换带有.o对象目标的.c文件.如何将条件".c或.cpp"组合在一起?

Rob*_*bin 6

我想我太忙了,不能忘记我可以通过执行这个函数两次来实现这个目标.

TMP_OBJ = $(LOCAL_SRC_FILES: .c=.o)
OBJ = $(TMP_OBJ: .cpp=.o)
Run Code Online (Sandbox Code Playgroud)

对不起这个愚蠢的问题.


Mad*_*ist 5

您可以使用基本名称:

OBJ := $(addsuffix .o,$(basename $(LOCAL_SRC_FILES)))
Run Code Online (Sandbox Code Playgroud)

(去掉每个文件的后缀然后LOCAL_SRC_FILES添加.o到末尾)