【问题标题】:GNU Make: requested targetGNU Make:请求的目标
【发布时间】:2016-11-04 15:57:14
【问题描述】:

是否有任何 GNU Make 特殊变量可以知道用户在命令行调用中发送的目标是哪个目标?实现类似(这只是一个例子):

// makefile
ifeq ($(USER_TARGET),"plain")
CXXFLAGS += -O0
else
CXXFLAGS += -O3
endif

plain:
    // do something using CXXFLAGS

all:
    // other rule using CXXFLAGS

重要的是,USER_TARGET 变量(可以是特殊的 GNU Make 变量,或由返回用户目标的某些特殊 GNU Make 函数设置的自定义变量)包含用户指定的原始目标在这样的电话中:

$ make plain

而不是依赖树的任何步骤中的值。换句话说,USER_TARGET 在构建依赖链期间一定不能改变,因为如果我没记错的话,USER_TARGET 的值将在第一次使用时进行评估,而不是在任何情况下都会发生文件的重点,所以,我想确保当前构建链的步骤不会改变USER_TARGET的值。

不知道是我说的够清楚还是解释的太多了。

如果 GNU Make 中没有内置机制,那么任何 $(shell command) 技巧也是受欢迎的。

【问题讨论】:

  • 也许这对你有用? Can't assign a variable inside a recipe.
  • 我不确定您要做什么,但我最近看到了一个带有 debug: clean @make CFLAGS='${DEBUG_CFLAGS}' 的 makefile
  • 请注意,可以指定多个目标,例如make -f Makefile build test 可以用于调用构建和测试目标
  • @mjs 没错,好点。我还没想过。

标签: bash makefile gnu-make


【解决方案1】:

您想要MAKECMDGOALS 变量described here

【讨论】:

    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2015-07-31
    相关资源
    最近更新 更多