c - 改进 Makefile,使其仅创建和清理已更改/特别请求的程序

标签 c makefile

基于 this stackoverflow 响应,我创建了一个将所有 .c 文件编译成单独的可执行文件的 Makefile。我添加了一个删除所有程序的 clean 部分。现在看起来像:

CFLAGS=-Wall -g

SRCS = $(wildcard *.c)

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

all: $(PROGS)

clean:
    rm -f $(PROGS)

%: %.c
    $(CC) $(CFLAGS)  -o $@ $<

我的问题是:

  1. 您如何让 Makefile 读取额外的命令行参数,以便它可以只清除指定的程序?

最佳答案

您可以添加一个 clean-% 目标,它只清理特定的二进制文件或其他此类游戏,但为什么呢?你的“干净”配方只是 rm 所以你自己运行 rm 就可以了。

至于仅构建特定的二进制文件,只需运行 make $binary 而不是 makemake all

make/make all 所做的就是按名称为每个列出的二进制文件运行目标。

关于c - 改进 Makefile,使其仅创建和清理已更改/特别请求的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468347/

相关文章:

c++ - 如何在 Windows 中制作一个简单的 Hello World "invisible"(C/C++)

c - 如何使用makefile以及 "no such jobs "是什么意思

visual-studio - 将 Qt 4.7.2 与 Visual Studio 2010 集成

c - 任何人都知道为什么这个编译成功?

javascript - 当 asm.js 比普通 JS 代码更快时,我为什么要在 JS 中编写新代码?

c++ - 如何在不使用 cygwin 的情况下在 Windows (Vista) 中为 C++ 文件运行 makefile?

c++ - 无法使用 cmake 构建 Opencv 项目

c++ - 为什么我会看到此消息 "library not found for -lboost_system"?

c - 如何在c中更快地生成正弦函数

const char array[] = {set} 以大端存储,我需要小端