首页 > 解决方案 > Makefile 基于环境变量的条件赋值

问题描述

我希望在我的 makefile 中有以下行为:

if the current user is "dev-builder":
  CACHE_DIR=/nfs/artifacts
else
  CACHE_DIR=
endif

在我的 Makefile 中,我有这样的东西:

ifeq($$USER,"dev-builder")
CACHE_DIR_FLAG="--output_base=/nfs/artifacts"
endif

mytarget:
  bazel $(CACHE_DIR_FLAG) build (other args)

但是从 make 出来的命令只是bazel build (other args)并且似乎没有捕捉到这种ifeq情况,即使我验证了我是作为构建者帐户登录的。如果我删除条件ifeq并只是盲目地分配CACHE_DIR_FLAG,则该命令是所需的。任何见解将不胜感激,谢谢!

标签: makefile

解决方案


引号ifeq导致字符串比较失败。

ifeq($(USER),dev-builder)
commands here
endif

推荐阅读