Makefile Conditionals错误的相等

时间:2011-11-06 21:36:33

标签: if-statement makefile

所以,我对makefiles有点新意,但我有这个规则:

$(rc)/%.class: $(r)/%.java
    echo $(strip $(findstring $*,"Robot RoboController"))
ifneq (,$(strip $(findstring $*,"Robot RoboController")))
    echo "Robot or RoboController"
else
    echo "other";
endif

我的目标是,如果匹配的文本是Robot或RoboController,那么它以一种方式编译,否则,它以不同的方式编译,不幸的是,当我运行时,我得到以下输出:

$ make Classes/RobotSuite/robot/Robot.class
    echo Robot
    Robot
    echo "other";   
    other
$ make Classes/RobotSuite/robot/RoboComm.class
    echo 

    echo "other";   
    other

似乎无论我放入ifneq,它都会错误地将其评估为等于空字符串。任何人都可以解释原因吗?

我正在使用为i686-pc-linux-gnu构建的GNU Make v3.81。

1 个答案:

答案 0 :(得分:1)

如果您使用的是GNU Make,请不要使用ifneq来解决此问题,请使用Target specific variable values