学无止境-Linux Makefile及时记

1、$(shell pwd)与$(PWD)区别

     $(shell pwd)是Make函数调用,Make解析时立即执行

     $(PWD)Make变量,来自环境变量

例如:
/root/test/Makefile:
      SHELL_PWD_DIR=$(shell pwd)
      PWD_DIR=$(PWD)
          
      all:
        @echo $(SHELL_PWD_DIR)
        @echo $(PWD_DIR)
            
/root/Makefile:
      make -C /root/test/
          
最后打印出来的结果:
      /root/test/
      /root/

 

2、在Makefile中改变环境变量PATH

export PATH:=$(MY_DIR)/bin:$(PATH)

不能放在Target下。

 

3、判断文件是否存在

@if [ -e $(PROJECT_DIR)/../images/sighop_user ]; then \
  rm -f $(PROJECT_DIR)/../images/sighop_user; \
fi
每行语句末尾都要加";\"
 
 
4、makefile的依赖和语句顺序问题
target: 依赖1 依赖2....
    语句1
    语句2
    ...
     如果依赖2需要在语句1执行之后再执行,那么可以:
target: 依赖1 ....
    语句1
    $(call 依赖2)
    语句2
    ...
$(call 依赖2)还可以传递参数:$(call 依赖2 ,var)
 
 
posted @ 2026-02-04 11:03  xMofang  阅读(5)  评论(0)    收藏  举报