• Linux


    通过shell指令和Makfile命令,创建通用的C/C++ makefile。需在当前文件夹创建bin,obj,lib三个子文件夹。

    makefile文件会自动搜索当前文件夹及其子文件夹中的C/C++文件。其中bin文件夹保存生成的可执行文件myapp,obj文件夹保存生成的中间文件*.o,lib保存需要的库文件。

    ###############################
    # Should create dir bin,obj,lib
    # Created by 
    # 2016/06/14
    ###############################
    
    DIR_INC=.
    DIR_SRC=.
    DIR_BIN=./bin
    DIR_OBJ=./obj
    DIR_LIB=./lib
    
    sources_all := $(shell find . -name "*.c" -o -name "*.cpp" -o -name "*.h")
    sources_c   := $(filter %.c, $(sources_all))
    sources_h   := $(filter %.h, $(sources_all))
    
    INC_HEADER := $(sort $(dir $(sources_h)))
    DIR_INC := $(strip $(subst / ./,:./,$(INC_HEADER)))
    DIR_INC += #add a NULL on trail
    DIR_INC := $(strip $(subst / , ,$(DIR_INC)))
    
    VPATH=$(DIR_INC)
    VPATH_INC=$(patsubst %,-I%,$(subst :, ,${VPATH}))
    
    SRC=$(sources_c)
    
    CLRDIR=$(notdir ${SRC})
    OBJ=$(patsubst %.c,${DIR_OBJ}/%.o,$(CLRDIR))
    
    CC =ccache arm-linux-gnueabihf-gcc
    
    LD =ccache arm-linux-gnueabihf-gcc
    
    LDFLAGS = -v -lgcc -lstdc++ -lm -lc -lgcc_s 
    
    LDFLAGS += -L${DIR_LIB} -Wl,-rpath,`pwd`/${DIR_LIB}
    
    TARGET=myapp
    
    BIN_TARGET=${DIR_BIN}/${TARGET}
    
    
    .PHONY : clean rebuild all
    
    all: $(BIN_TARGET) 
    
    %.d:%.c 
        set -e; rm -f $@;  $(CC) -MM $(VPATH_INC) $< > $@.$$$$;  
        sed 's,($*).o[ :]*,1.o $@ : ,g' < $@.$$$$ > $@;  
        rm -f $@.$$$$
        
    include $(SOURCES:c=.d)
        
    $(BIN_TARGET):$(OBJ)
        $(LD) $(LDFLAGS) -o $@ $^ -lpthread -lm
        
    
    ${DIR_OBJ}/%.o:${DIR_SRC}/%.c
        $(CC) $(VPATH_INC) -c $< -o $@ 
    
    
    
    clean:
        rm -rf $(DIR_OBJ)/*.o $(BIN_TARGET)
    
    rebuild: clean all
  • 相关阅读:
    Android 简单的语音播报
    Android 轮播图
    Android 再按一次退出程序
    Android 百度地图 android.view.InflateException: Binary XML file line Error inflating class com.baidu.mapapi.map.MapView
    Android Studio3.0打包APK的时候 报错:
    ADPU 大全
    全面介绍Android Studio中Git 的使用(一)
    坐标系转换
    Android 获取手机信息
    获取手机是否root信息
  • 原文地址:https://www.cnblogs.com/Pan-Z/p/6370183.html
Copyright © 2020-2023  润新知