gpt4 book ai didi

c++ - 来自变量的 Makefile : select files by extension,

转载 作者:太空狗 更新时间:2023-10-29 20:02:21 25 4
gpt4 key购买 nike

是否可以从变量中选择与特定扩展名匹配的文件,并丢弃其余文件?

SRCS = file1.c file2.c file3.cpp

OBJS = $(SRCS:%.c=%.o)
OBJS += $(SRCS:%.cpp=%.o)

问题在于 $(SRCS:%.c=%.o) 将 .c 文件转换为 .o 文件,保留了 . cpp 文件。

在这种情况下,OBJS 变量将等于

file1.o file2.o file3.cpp file1.c file2.c file3.o

而我想要的是

file1.o file2.o file3.o

那么,这可能吗?或者唯一干净的方法是使用 SRCS_CSRCS_CPP 变量?

最佳答案

对于 GNU make,有几个 text processing functions可用的。你可以试试这个:

CSRCS = $(filter %.c,$(SRCS))
CPPSRCS = $(filter %.cpp,$(SRCS))

这会将对象列表一分为二。然后您可以单独处理每个:

OBJS = $(CSRCS:%.c=%.o)
OBJS += %(CPPSRCS:%.cpp=%.o)

另一种选择是一次应用两个过滤器:

OBJS = $($(SRCS:%.c=%.o):%.cpp=%.o)

虽然可读性较差。

关于c++ - 来自变量的 Makefile : select files by extension,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893115/

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