- 适配多文件多目录
####################################################
#####Copyright (c) 2018, code farmer from sust.#####
###############All rights reserved.#################.PHONY: clean install# multi file
INC = ./include
SRC = https://www.it610.com/article/src
OBJ = ./obj
BIN = ./bin
BIN_TARGET = $(BIN)/testCC = gcc
CFLAGS = -g -Wall -I${INC}# match *.c
SOURCE = $(wildcard $(SRC)/*.c)
# replace *.o with *.c
OBJECT = $(patsubst %.c, $(OBJ)/%.o, $(notdir $(SOURCE)))$(BIN_TARGET):$(OBJECT)
$(CC) $(CFLAGS) $(OBJECT) -o $@$(OBJ)/%.o:$(SRC)/%.c
$(CC) $(CFLAGS) -c $< -o $@# echo debug info
echo:
@echo $(CC)
@echo $(SRC)
@echo $(INC)
@echo $(OBJ)
@echo $(BIN)install:
install -m 755 $(BIN) /usr/local/binclean:
rm -rf $(OBJECT) $(BIN_TARGET)
- 适配单个文件(C)
####################################################
#####Copyright (c) 2018, code farmer from sust.#####
###############All rights reserved.#################.PHONY: clean installCC = gcc
#CFLAGS = -g -Wall -fno-stack-protector
CFLAGS = -g -Wall# match *.c
SOURCE = $(wildcard ./*.c)
# replace * with *.c
#BIN = $(patsubst %.c, %, $(notdir $(SOURCE)))
BIN = $(basename $(SOURCE))$(BIN): $(SOURCE)
$(CC) $(CFLAGS) $(SOURCE) -o $@# echo debug info
echo:
@echo $(CC)
@echo $(SOURCE)
@echo $(BIN)install:
install -m 755 $(BIN) /usr/local/binclean:
rm -rf $(BIN)
- 适配单个文件(C++)
####################################################
#####Copyright (c) 2018, code farmer from sust.#####
###############All rights reserved.#################.PHONY: clean installCC = g++
CFLAGS = -g -Wall -std=c++11
#CFLAGS = -g -Wall -pthread -Wno-int-to-pointer-cast -Wpointer-to-int-cast -fno-stack-protector# match *.c*
SOURCE = $(wildcard ./*.c*)
# match suffix
#SUFFIX = $(suffix $(SOURCE))
# replace * with *.c*
#BIN = $(patsubst %$(SUFFIX), %, $(notdir $(SOURCE)))
BIN = $(basename $(SOURCE))$(BIN): $(SOURCE)
$(CC) $(CFLAGS) $(SOURCE) -o $@# echo debug info
echo:
@echo $(CC)
@echo $(SOURCE)
@echo $(SUFFIX)
@echo $(BIN)install:
install -m 755 $(BIN) /usr/local/binclean:
rm -rf $(BIN)
【【Linux】编写 Makefile】
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具