• Makefile 编译生成多个可执行文件


    CC = gcc
    CXX = g++
    CFLAGS = -O -DDBG -D_REENTRANT -Wall -DUSE_PTHREAD -pthread
    LDFLAGS = -ldl -lnsl -lm -lpthread
    
    #wildcard 对 c文件进行展开
    SRCS = $(wildcard *.c) $(wildcard *.cpp) 
    #去除路径信息
    dir=$(notdir $(SRCS))
    # 把后缀.c 替换成 .o
    OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o,$(dir))  )
    
    //OBJS = main1.o main.o
    
    DATALIBS = dblib/lib.a
    ZIPLIBS = ZipCoder/ZipCoder.a  
    
    TARGET = main main1
    all: $(TARGET)
        @echo $(SRCS)
        @echo $(dir)
        @echo $(OBJS)
    main : main.o $(filter-out main1.o main2.o,$(OBJS)) 
            $(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
    main1 :  main1.o $(filter-out main.o main2.o,$(OBJS))
            $(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
    
    
    
    %.o : %.c
        $(CC) -c $(CFLAGS)  $^ -o $@
    %.o : %.cpp
        $(CXX) -c $(CFLAGS) $^ -o $@    
    
    .PHONY : clean
    
    clean :
        rm -f *.o
        rm -f ../bin/excute
    
    # install:
    #         mv Excute excute; cp -f ordermisd ../bin/;

    Makefile常用理解:

    参数: makefile里用${temp} 

    定义的变量:  $(temp)

    传递的操作。 例如: make clean。 其中clean是伪字符.   makefile里的使用:clean:

    判断 参数跟变量都只用名字,
    ifdef 不用${TARGET} 和 $(TARGET)
    
    ifdef  TARGET
        HOST = ${TARGET}-
    else
        HOST = 
    endif
  • 相关阅读:
    (二)Maven的使用--安装配置
    (一)Maven介绍
    (二)Monkey自动化脚本
    App测试--专项测试
    Java基础--(三)运算符
    Vue.js 介绍入门
    NodeJS 入门第三天(Express框架)
    NodeJS 入门第二天(EJS模板)
    《前端架构设计》读后感
    NodeJS 入门第一天
  • 原文地址:https://www.cnblogs.com/hzijone/p/5705743.html
Copyright © 2020-2023  润新知