Makefile学习笔记

2017-09-30  本文已影响30人  806349745123
${LIB_STATIC}: libs ${objects}
    $(AR) rcs $@ $(objects) $(BUILD_OUT_PATH)*.o 
    -rm ${objects}
    -rm -rf ${BUILD_OUT_PATH}

格式:ar rcs libxxx.a xx1.o xx2.o 链接


函数wildcard: 但在变量的定义和函数引用时,通配符将失效,使用该函数让通配符展开。链接


make -C $(MBEDTLS_PATH) lib -e CC=$(PLATFORM_CC) AR=$(PLATFORM_AR)
cp -RP $(TLS_LIB_DIR)libmbedtls.*   $(BUILD_OUT_PATH)
cp -RP $(TLS_LIB_DIR)libmbedx509.*  $(BUILD_OUT_PATH)
cp -RP $(TLS_LIB_DIR)libmbedcrypto.* $(BUILD_OUT_PATH)
cd $(BUILD_OUT_PATH) && $(AR) x libmbedtls.a
cd $(BUILD_OUT_PATH) && $(AR) x libmbedx509.a
cd $(BUILD_OUT_PATH) && $(AR) x libmbedcrypto.a

1、-e或者--environment-override: 不允许在Makefile中对系统环境变量进行重新赋值,比如上面代码中规定CC和AR禁止被重新赋值。

2、make -C $(MBEDTLS_PATH) lib -e CC=$(PLATFORM_CC) AR=$(PLATFORM_AR)

3、cp -RP $(TLS_LIB_DIR)libmbedtls.* $(BUILD_OUT_PATH)


CFLAGS += -Wall -O2 ${INCLUDE_DIRS}
CFLAGS += -DSTD_OUT
CFLAGS += -DIOT_SDK_TRACE

${objects}:%.o:%.c
    $(CC) $(CFLAGS) -c $^ -o $@
  1. $^ : 指代所有前置条件,之间以空格分隔。比如,规则为 t: p1 p2,那么 $^ 就指代 p1 p2 。
  2. $@ : $@指代当前目标,就是Make命令当前构建的那个目标, 这里就是${objects}。参考
上一篇 下一篇

猜你喜欢

热点阅读