我目前有一个Android.mk文件。对于某些要求,我需要编写一个标准的GNU make文件来构建相同的程序。
正如您在Android原生构建中所知,我们只是将所有源文件放在一起,如
LOCAL_SRC_FILES := a.c b.c d.cpp e.cpp
现在我想在Makefile中做一些事情,如:
OBJ = $(LOCAL_SRC_FILES: .c=.o)
这只会转换带有.o对象目标的.c文件。如何将条件“。c或.cpp”组合在一起?
答案 0 :(得分:6)
我想我太忙了,不能忘记我可以通过执行这个功能两次来实现这个目标。
TMP_OBJ = $(LOCAL_SRC_FILES: .c=.o)
OBJ = $(TMP_OBJ: .cpp=.o)
对不起这个愚蠢的问题。
答案 1 :(得分:3)
你也可以写:
OBJ := $(addsuffix .o,$(basename $(LOCAL_SRC_FILES))
(剥离LOCAL_SRC_FILES
中每个文件的后缀,然后将.o
添加到结尾处)
答案 2 :(得分:2)
分两步完成:
SRC := main.c hello.cpp
OBJ := $(SRC:.c=.o)
OBJ := $(OBJ:.cpp=.o)