• makefile编译静态库或动态库,遍历所有源文件


    TARGET_NAME=libstatic.a
    #TARGET_NAME=libdynamic.so
    
    
    CROSS=
    CC=$(CROSS)gcc 
    CXX=$(CROSS)g++ 
    #DEBUG=-g 
    DEBUG=
    MV=mv -f 
    CP=cp -f 
    RM=rm -rf 
    LN=ln -sf 
    AR=ar -cr
    
    TOP_PATH = $(shell pwd)
    #INC_PATH = $(TOP_PATH)/include
    INC_PATH=
    SRC_PATH = $(TOP_PATH)/src
    MOD_PATH = $(SRC_PATH)
    #MOD_LIB_PATH = $(MOD_PATH)/lib
    #MOD_INC_PATH = $(MOD_PATH)/include
    MOD_LIB_PATH =
    MOD_INC_PATH =
    DIRS = $(shell find $(SRC_PATH) -maxdepth 10 -type d)
    #FILES = $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cpp))
    
    ARCH=X64
    ifeq ($(shell getconf LONG_BIT), 32)
        ARCH=X86
    endif
    
    TARGET=$(TOP_PATH)/$(ARCH)/$(TARGET_NAME)
    
    MODULES_PATH :=  $(foreach m, $(DIRS), $(m))
    
    #SRCS_CPP += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cpp))
    #SRCS_CC += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cc))
    SRCS_C += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.c))
    
    #OBJS_CPP = $(patsubst %.cpp, %.o, $(SRCS_CPP))
    #OBJS_CC = $(patsubst %.cc, %.o, $(SRCS_CC))
    OBJS = $(patsubst %.c, %.o, $(SRCS_C))
    
    INC_PATH += -I$(MOD_INC_PATH)
    INC_PATH += -I$(MOD_PATH)
    #LIB_PATH += -L$(TOP_PATH)/lib
    #LIB_PATH += -L$(MOD_LIB_PATH)
    LIB_PATH +=
    LIB_PATH +=
    
    CMD=
    TARGET_NAME_A=libtue_api.a
    TARGET_NAME_SO=libtue_api.so
    ifeq ($(TARGET_NAME), $(TARGET_NAME_A))
        CFLAGS=$(DEBUG) -Wall -c 
        CMD=$(AR) $@ $^
    else ifeq ($(TARGET_NAME), $(TARGET_NAME_SO))
        CFLAGS=$(DEBUG) -Wall -c -fPIC
        CMD=$(CC) -shared -o $(TARGET) $(OBJS)
    endif
    
    all:$(TARGET)
    $(TARGET) : $(OBJS)
        $(CMD)
    
    $(OBJS):%.o : %.c
        $(CC) $(CFLAGS) $< -o $@
    
    .PHONY : clean
    clean:
        @ $(RM) $(TARGET) $(OBJS)
        @ $(RM) $(SRC_PATH)/*.o
        @ $(RM) $(TARGET)
     
  • 相关阅读:
    如何注册一个ens域名
    storj
    Polygon
    拜占庭容错
    10秒钟完成metamask上任意公链主网添加
    Logistic Regression
    Normal Equations
    神经网络学习笔记 lecture3:The backpropagation learning proccedure
    Three Types of Learning
    Exercise: Logistic Regression and Newton's Method
  • 原文地址:https://www.cnblogs.com/ericdm/p/16190731.html
Copyright © 2020-2023  润新知