首页 > 解决方案 > Makefile:存储“make”之后的参数(即第二个命令行参数)不起作用

问题描述

我正在尝试将命令行中传递的第二个参数(即 之后的参数make)存储在一个名为 的变量NAME中,然后用它来做一些事情。如果没有第二个参数,那么NAME = a

为什么它不起作用?

这是我的一个片段Makefile

NAME := $(shell $2)

ifeq ($(strip $(NAME)),)
    $(NAME) = a
endif


# ... and do other things with NAME

它给了我这个错误:

*** empty variable name. Stop

标签: if-statementmakefileconditionalcommand-line-argumentsgnu-make

解决方案


您不能$1make.

的参数make是目标或选项,不能用$1.

该命令make foo指示make创建foo目标。如果您想传递参数,您可以使用make param=foo并且可以在变量中访问Makefile${param}使用 value foo)。


推荐阅读