zoukankan      html  css  js  c++  java
  • Linux c 开发-10 Makefile用法试验

    1-2个代码文件的简单的程序用不用Makefile都没问题,复杂的项目最好用Makefile,下面改造下上面的MakeFile,尽量使用Makefile比较高阶的语法。

    1、原始Makefile

    test.o:test.c
        gcc test.c -o test.o -lpthread
    

    2、改成使用变量

    SRC := test.c
    OBJ := test.o
    TAR := tt
    CC := gcc
    $(TAR):$(OBJ)
    	$(CC) $(OBJ) -o $(TAR)  -lpthread

    这个时候test.o并不存在,但是也能编译成功,看编译过程

     会自动执行一句gcc -c -0 test.o  test.c

    和下面这种写法效果是一样的

    SRC := test.c
    OBJ := test.o
    TAR := tt
    CC := gcc
    $(TAR):$(OBJ)
    	$(CC) $(OBJ) -o $(TAR)  -lpthread
    
    %.o:%.c
    	$(CC) -o  $@ -c $<  -lpthread  

      

    $@:目标的名字

    $^:构造所需文件列表所有文件的名字

    $<:构造所需文件的第一个文件的名字

    $?:构造所需文件列表中更新过的文件

    3、一个较典型的Makefile文件写法

    CC = gcc
    INCLUDE = -I ./include  
    LIBS   +=  -lpthread  -lzlog 
    
    LIB_PATH += -L ./lib
    CFLAGS = -Wall -Wno-unused-function -Wno-unused-variable
    OBJS   = test.o config.o 
    #OBJS	= *.o
    TARGET =  tt
    
    all:$(TARGET)
    
    $(TARGET):$(OBJS)
    	$(CC) -o $@ $^ $(LIBS) $(LIB_PATH)
     
     %.o:%.c
    	$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDE)
    
    .PHONY: all clean cleanobject
    cleanobject:
    	rm -rf *.o
    clean: 
    	rm -rf *.exe *.o tt
    

      

      

    1、建了一个小群:616945527(软件), 欢迎大家加入,加群口令abc123,硬件嵌入式开发者推荐75764412(单片机)。
    闲置域名www.nsxz.com出售(等宽等高字符四字域名,可组合多种有意义词语)。
  • 相关阅读:
    Java中RuntimeException和Exception的区别
    dubbo常见错误
    Spring3.x 版本和 JDK1.8 不兼容导致 java.lang.IllegalStateException: Failed to load ApplicationContext
    @Autowired与@Resource的区别
    阿里巴巴数据库连接池 druid配置详解
    HttpDns原理
    spring四种依赖注入方式
    JdbcTemplate
    springmvc常用注解标签详解
    访问spring接口一定要用.do么?
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/14588027.html
Copyright © 2011-2022 走看看