一个比较通用Makefile模板

模板一

CC:=/opt/mainline_toolchain-master/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
#CC:=gcc
RM:= rm -rf
INC:= -I./include/
LIBS:= -L./ -lmosquitto -pthread
TARGET:=Client
#COMPILE_TIME = $(shell date +"%Y%m%d-%H%M")

OBJS:=  client_shared.o sub_client.o sub_client_output.o kyzh_protocol.o 
all:$(OBJS)
	$(CC) $^  $(INC) -o $(TARGET) $(LIBS)
	$(CC) -o xxx xxx.c

%.o:%.c
	$(CC) -c $< -o $@ $(LIBS) $(INC)
clean:
	$(RM) $(OBJS) $(TARGET)
ln:
	ln -s ./libmosquitto.so.1 /usr/local/lib/libmosquitto.so

模板二

CC:= gcc
#CUR_SOURCE=${wildcard *.c}


INC:= -I ./mbedtls
RM:= rm
TARGER:= main

CUR_OBJS += aes.o
CUR_OBJS += aesni.o
CUR_OBJS += platform.o
CUR_OBJS += platform_util.o
CUR_OBJS += aes_interf.o
//CUR_OBJS += PTC_common.o
all:$(CUR_OBJS)
	$(CC) $^ $(INC) -o $(TARGER) -march=i486 -m32
#-m32 表示编译的可执行文件是32位的
%.o:%.c
	$(CC) -c $< -o $@ $(INC) -march=i486 -m32
clean:
	$(RM) $(CUR_OBJS) $(TARGET) 

-march可用参数
-march=CPU[,+EXTENSION…]
generate code for CPU and EXTENSION, CPU is one of:
i8086, i186, i286, i386, i486, pentium, pentiumpro,
pentiumii, pentiumiii, pentium4, prescott, nocona,
core, core2, corei7, l1om, k6, k6_2, athlon, k8,
amdfam10, generic32, generic64
EXTENSION is combination of:
8087, 287, 387, no87, mmx, nommx, sse, sse2, sse3,
ssse3, sse4.1, sse4.2, sse4, nosse, avx, noavx,
vmx, smx, xsave, movbe, ept, aes, pclmul, fma,
clflush, syscall, rdtscp, 3dnow, 3dnowa, sse4a,
svme, abm, padlock, fma4, xop, lwp

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当编写一个通用Makefile 模板时,可以使用以下内容作为起点: ```makefile # 编译器 CC = gcc # 编译选项 CFLAGS = -Wall -Wextra -std=c99 # 目标文件夹 BUILD_DIR = build # 源文件夹 SRC_DIR = src # 源文件后缀 SRC_EXT = c # 获取所有源文件 SRCS = $(wildcard $(SRC_DIR)/*.$(SRC_EXT)) # 获取所有目标文件 OBJS = $(patsubst $(SRC_DIR)/%.$(SRC_EXT), $(BUILD_DIR)/%.o, $(SRCS)) # 目标可执行文件 TARGET = app # 默认目标 all: $(TARGET) # 编译目标文件 $(BUILD_DIR)/%.o: $(SRC_DIR)/%.$(SRC_EXT) mkdir -p $(BUILD_DIR) $(CC) $(CFLAGS) -c $< -o $@ # 构建可执行文件 $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ # 清理生成的文件 clean: rm -rf $(BUILD_DIR) $(TARGET) .PHONY: all clean ``` 这个模板定义了以下几个变量和规则: - `CC`:编译器的名称,此处为 `gcc`,你可以根据需要修改为其他编译器。 - `CFLAGS`:编译选项,例如 `-Wall` 和 `-Wextra` 是常见的警告选项,`-std=c99` 指定了 C99 标准。 - `BUILD_DIR`:目标文件夹的名称,可以根据需要修改。 - `SRC_DIR`:源文件夹的名称,可以根据需要修改。 - `SRC_EXT`:源文件的扩展名,此处为 `c`,你可以根据需要修改为其他扩展名。 - `SRCS`:所有源文件的列表。 - `OBJS`:所有目标文件的列表。 - `TARGET`:可执行文件的名称。 - `all`:默认目标,依赖于 `$(TARGET)`。 - `$(BUILD_DIR)/%.o`:用于将源文件编译为目标文件的规则。 - `$(TARGET)`:构建可执行文件的规则。 - `clean`:清理生成的文件的规则。 使用该模板时,将源文件放置在 `src` 文件夹中,然后运行 `make` 命令即可编译生成可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只很笨很懒的肥猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值