我有 c 和 c++ 源文件的混合器。我正在尝试将它们组合到目标目录所需的 .o 中。
SOURCES: = SOURCES=src/test.c src/cpptest.cpp src/directfb_test.cpp src/foo.c
我尝试了什么:
OBJECTS=$(SOURCES:src/%.c=$(OBJDIR)/%.o)
OBJECTS+=$(SOURCES:src/%.cpp=$(OBJDIR)/%.o)
这也是
OBJECTS := $(patsubst %.cpp, %.o, $(addprefix $(OBJDIR)/, $(notdir $(SOURCES))))
OBJECTS += $(patsubst %.c, %.o, $(addprefix $(OBJDIR)/, $(notdir $(SOURCES))))
两者似乎都不起作用。
我在 OBJECTS 中同时获得了 .o 以及 .c 和 .cpps 。有没有办法在 patsubst 中添加 OR?
解决方案:
OBJECTS := $(patsubst %.cpp, %.o,$(addprefix $(OBJDIR)/,$(filter %.cpp ,$(notdir $(SOURCES)) )) )
OBJECTS += $(patsubst %.c, %.o,$(addprefix $(OBJDIR)/,$(filter %.c ,$(notdir $(SOURCES)) )) )
为 %.c 和 %.cpp 添加了过滤器。我想会有其他方法。我要这样做。