gpt4 book ai didi

c++ - 如何在 Makefile 的 pathsubst 中添加 "or"

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:19 27 4
gpt4 key购买 nike

我有 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 添加了过滤器。我想会有其他方法。我要这样做。

最佳答案

另一种方式是:

OBJECTS := $(patsubst src/%.cpp, $(OBJDIR)/%.o,$(SOURCES))
OBJECTS := $(patsubst src/%.c, $(OBJDIR)/%.o, $(OBJECTS))

如果您想知道问题中的第一个方法有什么问题,只需将 $(info $(OBJECTS)) 放在两个命令之间,它会非常清楚。

关于c++ - 如何在 Makefile 的 pathsubst 中添加 "or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com