c - 维护一个我不希望 Make 编译的程序列表,我可以使用 >> 和 SED 进行更改,而不是编辑 makefile?

标签 c bash makefile

我对 Make 还很陌生。我当前的 Makefile 如下。它将所有 .c 文件编译成相应的可执行文件。 c 文件列表不断增长(我添加了越来越多的文件,p1.c、p2.c、p3.c,...)。所以我希望它编译其中的大部分,但是如果有一个特定的文件有错误,我不想打扰,我希望能够将其放在不-编译列表——也就是说,与其告诉 make 我想要编译什么,不如告诉它我不想编译什么会更快。很容易有一个文件 dont.txt,我可以在其中添加和删除行,每个行都包含“px.c”。如果我有这样的文件,我如何告诉 make 编译这些 .c 文件?

CFLAGS = -g -pedantic -std=c99 -Wall

SRCS = $(wildcard *.c)

PROGS = $(patsubst %.c,%,$(SRCS))

all: $(PROGS)

%: %.c

    $(CC) $(CFLAGS)  -o $@ $<

谢谢

最佳答案

你可以过滤掉你不想编译的源文件

SRCS = $(filter-out excludefile.c, $(wildcard *.c))

此外,如果您维护要排除的文件名,请使用如下命令

例如文件是 exclude.txt 那么

EXCLUDES := $(shell cat ./exclude.txt)

SRCS = $(filter-out $(EXCLUDES), $(wildcard *.c))

关于c - 维护一个我不希望 Make 编译的程序列表,我可以使用 >> 和 SED 进行更改,而不是编辑 makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342948/

相关文章:

javascript - 为什么 child_process.execSync 的输出为空?

c - makefile 中的变量,意外行为

c - C 中的 remove() 返回 "No such file or directory"

C编程---如何在FILE中保存带空格的字符串并调用它们

regex - 使用正则表达式仅匹配 5xx

makefile - 使 "make"默认为 "make -j 8"

c++ - 在 Xcode 中导入 C++ 项目

c++ - 空指针强制转换 C++ 和 GTK

c - 如何将结构体数组复制到同一数组中的另一个结构体?

git - 无法引入 git 钩子(Hook)(bash 脚本)