linux - make 用于编译——所有 *.c 文件

标签 linux makefile

为了编译两个文件,我创建了一个 makefile,我用它来提及对象名称。

OBJ = led-player_backup.o led-player.o

现在,如果我的文件夹包含 100 个文件,我是否必须在 makefile 中写入 100 个对象的名称。在这种情况下是否可以编写一些模式规则来为所有 *.c 文件创建目标文件。

这是我原来的 makefile。要修改什么才能达到相同的效果?

# ----------------------------------------------------------------------------
# Makefile for building tapp
#
# Copyright 2010 FriendlyARM (http://www.arm9.net/)
#

ifndef DESTDIR
DESTDIR            ?= /opt/FriendlyARM/tiny6410/linux/rootfs_qtopia_qt4
endif

CFLAGS              = -Wall -O2  # wall is for warning show and 02 is optiminisation level 2
CC                    = arm-linux-gcc   # compiler name
INSTALL             = install         # 

TARGET              = led-player

OBJ = led-player_backup.o led-player.o

#all: $(TARGET) 

all: $(OBJ)


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

#$< -o $@


install: $(TARGET)
    $(INSTALL) $^ $(DESTDIR)/usr/bin

clean :
    rm -rf *.o $(TARGET)


# ----------------------------------------------------------------------------

.PHONY: $(PHONY) install clean

# End of file
# vim: syntax=make

最佳答案

尝试:

OBJ := $(patsubst %.c,%.o,$(wildcard *.c))

关于linux - make 用于编译——所有 *.c 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452464/

相关文章:

linux - 使用 TOP 命令获取所有 CPU 使用率

linux - 为什么在 python3 中导入 pyspark 需要我的 linux 机器上的 super 用户访问权限?

c - 如何使用 make 实用程序检查其中一个 C 文件中的错误?

c++ - MAKEFILE:在不修改文件的情况下将目标视为已更新

c - Makefile C 子目录规则来制作 obj

linux - 在 Linux 中以编程方式隐藏/显示窗口

linux - IP2Location + Netmiko 到 SSH 到 VM 到 MTR 并打印结果(If、elif、else 语句问题)PYTHON3

php - 如何将 MySQL 远程数据库表插入本地数据库表?

makefile - 如何在不通过所有 Makefile 的情况下构建 bootimage

makefile - 是否可以在 Gitlab CI 中仅重建更新的文件?