unix - AIX make/makefile : variable assignment is not working

标签 unix makefile aix

标准 AIX make 工具是否有一些使用动态变量的技巧? 我希望根据底层主机名创建不同的目录:

# makefile
thisHOSTNAME=`hostname`

all: $(thisHOSTNAME) makeMyDir

machine-1:
    TMP_DIR=V1

machine-2:
    TMP_DIR=V2

makeMyDir:
    @echo makeMyDir TMP_DIR=$(TMP_DIR)
# mkdir -p $(TMP_DIR)  !! NOT WORKING

运行“make all”时,发现 $TMP_DIR 是空的!? 目标中的依赖项 $(thisHOSTNAME) all 已正确解析,并且相应的目标被执行,但变量 TMP_DIR 并未维护看起来分配的值。

$ 全部制作

TMP_DIR=V2
makeMyDir TMP_DIR=

最佳答案

反引号语法是shell语法,而不是ma​​ke语法。您可以将其用作命令中使用的变量的值,但不能将其用作目标名称,如

thisHOSTNAME=`hostname`
all: $(thisHOSTNAME) makeMyDir

明白这变成了

all: `hostname` makeMyDir

并使all依赖于目标主机名包括反引号(我不知道如何在此处插入),因为依赖关系是在 ma​​ke 语法中指定。

我不确定 AIX make 是否允许使用允许使用的 GNU make 语法

thisHOSTNAME = $(shell hostname)

如果没有,您可能会考虑将 AIX makefile 转换为 GNU makefile。

关于unix - AIX make/makefile : variable assignment is not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317793/

相关文章:

unix - Unix 中的作业和进程有什么区别?

c++ - 构建 Qt Static 5.3.2 时出错

xcode - 如何从 Xcode 运行 "make install"

java - 同时从多个线程调用 shell 脚本

java - AIX 环境 - TCP 端口 RecvQ 数据增加但应用程序不消耗

c++ - 在 Linux 上使用 G++ 共享库

unix - 如何获取 diff 以报告新行、更改行和删除行的摘要

linux - 在 Linux 上创建硬链接(hard link)期间的 EACCES 与 link(2) 手册页中的任何原因不匹配

linux - 在 Mocha.js 测试上运行 "make"时,在安装的驱动器上,出现权限被拒绝错误 127

solaris - 如何在 Solaris、HP-UX 和 AIX 中查找共享内存限制和信号量限制?