zoukankan      html  css  js  c++  java
  • Makefile基础

    命令方式:

           makefile 或 Makefile

    makefile规则:

           目标,依赖,命令

           目标:依赖条件

                  命令

    版本1:

    app : main.o add.o sub.o mul.o
        gcc main.o add.o sub.o

    版本2:

    app:main.o add.o sub.o mul.o
        gcc main.o add.o sub.o mul.o -o app
    main.o : main.c
        gcc -c main.c
    add.o : add.c
        gcc -c main.c
    sub.o : sub.c
        gcc -c sub.c
    mul.o : mul.c
        gcc -c mul.c

    makefile工作原理:

    版本3:

    obj=main.o add.o sub.o mul.o
    target=app
    $(target):$(obj)
        gcc $(obj) -o $(target)
    %.o:%.c
        gcc -c $< -o $@

    makefile中自动变量

    $<:规则中的第一个目标

    $@:规则中的目标

    $:规则中所有的依赖

    只能在规则的命令中使用

    Makefile维护的一些变量:

    CC:默认值 cc

    CPPFLAGS:预处理器需要的选项,如-I

    CFLAGS:编译的时候使用的参数 -Wall -g -c

    LDFLAGS:链接库使用的选项 -L -l

    版本4:

    obj=main.o add.o sub.o mul.o
    target=app
    CC = gcc
    CPPFLAGS = -I
    $(target):$(obj)
        $(CC) $(obj) -o $(target)
    %.o:%.c
        $(CC)-c $< -o $@

     版本5

    target=app
    src=$(wildcard ./*.c)
    obj=$(patsubst ./%.c, %.o, $(src))
    INCLUDE=-I ../include
    CC = g++
    CPPFLAGS = -I 
    $(target):$(obj)
        $(CC) $(obj) -o $(target)
    %.o:%.c
        $(CC) $(INCLUDE) -c $< -o $@
    .PHONY:clean
    clean:    
        rm $(obj) $(target)

    mkdir /aa

    创建一个目录

    -mkdir  -的意思是如果执行失败就忽略此条命令继续往下执行

  • 相关阅读:
    驱动编程杂谈
    mysql数据库之视图
    mysql编程
    添加内核编译选项
    内核编译遇到的一些问题
    jffs2和yaffs2文件系统
    宿主机挂载和使用嵌入式文件系统
    只读文件系统
    Makefile的简单编写
    UITableview delegate dataSource调用探究
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11295757.html
Copyright © 2011-2022 走看看