zoukankan      html  css  js  c++  java
  • 学习Makefile

    1> 编译一个文件
    2> 编译多个文件
    3> 编译多个目录下的文件
    4> inclue makefile
    5> 使用规则
    1>
    target:depend
    [tab]cmd
    depnd:file
    [tab]cmd
    举例如下
    test:main.o
    [tab]gcc -o test main.o
    main.o:main.c
    [tab]gcc -o main.o -c main.c

    2>
    2.1 目标文件依赖多个文件

    CC = gcc
    
    #INC =  -I./include/
    #LIBVAR = -lpthread
    #LIBPATH = -L./lib
    
    #CFLAGS ?= -O2 -g
    
    OBJS := main.o
    OBJS += add.o
    OBJS += sub.o
    
    SRCS := main.c
    SRCS += add.c
    SRCS += sub.c
    TARGET = test
    
    $(TARGET):$(OBJS)
            $(CC) $(INC) $(CFLAG) -o $@ $^ $(LIBVAR) $(LIBPATH)
            @echo "build success"
    
    $(OBJS):$(SRCS)
            $(CC) $(INC) $(CFLAG) -c $^ $(LIBVAR) $(LIBPATH)
    
    clean:
            rm -rf $(OBJS) $(TARGET)
    
    install:
            @echo "do nothing"

    2.2 生成多个目标文件,我们可使用伪目标

    CC = gcc
    
    #INC =  -I./include/
    #LIBVAR = -lpthread
    #LIBPATH = -L./lib
    #CFLAGS ?= -O2 -g
    #SRCS =
    
    OBJS := hello.o
    OBJS += test.o
     
    TARGET = test hello
    
    all:$(TARGET)
    @echo "success to build" test:test.c $(CC) $(INC) $(CFLAGS)
    -o $@ $^ $(LIBVAR) $(LIBPATH) hello:hello.c $(CC) $(INC) $(CFLAGS) -o $@ $^ $(LIBVAR) $(LIBPATH) clean: rm -rf $(OBJS) $(TARGET) install: @echo "do nothing"

    $@ 表示目标文件

    $^ 表示所有依赖项

    $< 表示第一个文件

    简化makefile 如下:

    CC = gcc
    
    #INC =  -I./include/
    #LIBVAR = -lpthread
    #LIBPATH = -L./lib
    #CFLAGS ?= -O2 -g
    #SRCS =
    
    #wildcard对.c文件进行展开
    SRCS = $(wildcard ./*.c)
    
    OBJS  = $(patsubst %.c, %.o, $(SRCS))
    
    #将SRCS中后缀.c替换成空,即可执行程序的名字与c名字相同
    TARGET  = $(patsubst %.c, %, $(SRCS))
    
    all:$(TARGET)
        @echo "success to build"
    
    $(TARGET):$(OBJS)
        gcc $< -o $@
    
    $(OBJS):$(SRCS)
        gcc -c $<
    
    clean:
            rm -rf $(OBJS) $(TARGET)
    
    install:
            @echo "do nothing"
  • 相关阅读:
    [AU3]技巧
    [AU3]Windows 10 Update message DETELEDER Win10更新通知删除助手
    vue多选框选择后显示选中的内容
    计算object的长度
    关于苹果手机点击事件无效的解决办法
    vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字
    关于json数据格式错误
    Java下使用Swing来进行图形界面开发
    数字与静态
    Java中的内存机制及管理
  • 原文地址:https://www.cnblogs.com/jyfyonghu/p/10526209.html
Copyright © 2011-2022 走看看