作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
是否可以从变量中选择与特定扩展名匹配的文件,并丢弃其余文件?
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_C
和 SRCS_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/
我有一个名为copyToClipboard()的函数。这需要一个名为 element 的参数。该函数通过定位元素的 id、选择并复制内容来复制元素的内容。 例如: JS /* * Copy to c
我正在研究 Java,想知道以下各项在性能方面有何不同。我知道过早优化是编程的困境,但我的好奇心仅供将来引用。 public class Type1{ int[] data = new da
我正在使用此代码从 csv 文件中获取数组: array_map('str_getcsv', 'file.csv') 但是在 array_map 函数中使用它时,如何为 str_getcsv() 设置
我是一名优秀的程序员,十分优秀!