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

时间:2014-03-19 07:53:34

标签: makefile

我目前有一个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”组合在一起?

3 个答案:

答案 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)