Makefile 到 Shell 转换

Makefile to Shell Conversion

  1. 正在尝试将基本 Makefile 转换为 shell 等效文件,但在一些基础知识中迷失了方向。

  2. 下面是Makefile中的一段代码

    WHAT1_UC           := ALOHA 
    WHAT1_NUM          := 1 
    WHAT1_WHERELOG_VAR = $(WHAT1_UC)_WHERE_FILENAME
    ifeq ($(strip $(WHAT1_NUM)), 1)
      $(WHAT1_WHERELOG_VAR) = mac.@PATH@.log
    else
      $(WHAT1_WHERELOG_VAR) = $(RLDIR)/mac.@PATH@.t%.log
    endif
    export $(WHAT1_WHERELOG_VAR)
    

    查询: 一种。在此 @PATH@.log 代表什么?它是否选择默认的环境变量 PATH ? b.那么 WHAT1_WHERELOG_VAR 的最终值是多少,是 export ALOHA_WHERE_FILENAME = mac.@PATH@.log ??

  3. 下面是一段 shell 代码,正在尝试基于上面的 Make 代码,但无法复制它的等价物。

WHAT1_UC="ALOHA"
WHAT1_NUM=1 
WHAT1_WHERELOG_VAR=${WHAT1_UC}_WHERE_FILENAME
if [ $WHAT1_NUM == 1 ]; then
  export ${WHAT1_WHERELOG_VAR}=mac@$PATH@.log
else
  export ${WHAT1_WHERELOG_VAR}=${RLDIR}/mac.@PATH@.t%.log
fi

要使用的 @PATH@ 的 shell 等价物是什么??

请澄清以上问题。让我知道错过了什么?谢谢

Query: a. In this what does @PATH@.log represents ?

在POSIX或GNUmake中,@PATH@.log代表@PATH@.log。但是 @PATH@ 部分可能不是故意的——它有一个占位符的外观,本应由单独的程序填充,例如 autoconf,作为生成 makefile 的一部分看着。

或者,这可能是为了在构建过程中被替代。

Is it picking the default env variable PATH ?

不,它在我所知道的任何 makefile 方言中都没有特殊含义。

b. So what will be the final value of WHAT1_WHERELOG_VAR,

是ALOHA_WHERE_FILENAME.

is it export ALOHA_WHERE_FILENAME = mac.@PATH@.log ??

没有。 $(WHAT1_WHERELOG_VAR)${WHAT1_WHERELOG_VAR} 扩展为变量 WHAT1_WHERELOG_VAR 的值。它们与设置该变量的值无关。

What is the shell equivalent of @PATH@ to be used ??

@PATH@,对shell的意义并不比对make的意义大。