zoukankan      html  css  js  c++  java
  • 一个简单的Makefile模版

    说明:

        linux下编程在不实用IDE的情况下,基本的工具有vim+gcc+gdb。不过个人感觉很原始。不过高手们都说这样才能显得高端么。

        其中make工具可以实现一定的自动化。联想到linux下安装软件的时候,过程为:执行./config之类的配置文件,make编译文件,make install安装文件和使用make clean来清理安装中的垃圾。两个都使用的make工具。

    模版:

    #这算是一个入门级的通用Makefile模板

    #--编译器部分的编写模板
    CC=gcc
    INCLUDES=-I/home/noah/buld_sqlite3/include
    LIBS=-L/home/noah/build-sqlite3/lib -lsqlite3
    CCFLAGS=-g -Wall -O0

    #--编译目标的变量化
    SRCS=$(wildcard*.c)
    OBJS=$(SRCS:.c=.o)  #这条语句的作用是OBJS的值是将SRCS中的.c替换为.o。比如说SRCS=main.c hello.c的话那么OBJS就是main.o hello.o了。

    #--工作主体部分
    my_app:$(OBJS)
        $(CC) $^ -o $@ $(INCLUDES) $(LIBS)
    %.o:%.c
        $(CC) -c $< $(CCFLAGS)

    #--扩展收尾部分
    .PHONY:clean  #“伪目标”并不是一个文件,只是一个标签
    clean:
        rm *.o


     

    ################    附加说明      #####################
    #如果不想显示命令的化,可以在命令前加“@”。
    #如果要让一条命令影响下一条命令的化,将两个命令写到同一行中
           --典型应用是进入文件夹。
    #$@(目标文件),$^(所有的依赖文件),$<(第一个依赖文件)
    #OBJS+=main.o表示追加变量值
    #其中“%”表示模式,而应用在模式中的"$<"将是符合模式的一系列的文件集。

    小结:

    这个例子还是很初级的,也挺实用的。今后多用用>.<

    不过还有一些改进,比如说源文件分布在不同的目录下的时候怎么用。。。

    未完待续。。。

  • 相关阅读:
    误操作 rpm -e --nodeps zlib
    Raid阵列之简单介绍
    GpG使用指南
    hadoop系统的端口
    网站日志流量复杂分析
    Flume在企业大数据仓库架构中位置及功能
    Hue的安装与部署
    Hive中的数据倾斜
    Hive的三种Join方式
    如何每日增量加载数据到Hive分区表
  • 原文地址:https://www.cnblogs.com/davidyang2415/p/2424916.html
Copyright © 2011-2022 走看看